dotnet / dotnet/BenchmarkDotNet
Reorganize command line interface options/parameters
- Dominant language
- C#
- Stars
- 11.5k
- Forks
- 1.1k
- Avg merge
- 6d 11h
- Merged PRs (30d)
- 12
Description
As commented at https://github.com/dotnet/BenchmarkDotNet/pull/3162#issuecomment-4592633337
> I wonder if we should use this as an opportunity to consider redesigning the existing command line arguments.
>
> What we have as of today is literally two commands (run benchmarks or display info) and the benchmarking command has way too many options/arguments (I am the one to blame for that). Moreover, it certain things are impossible to configure with command line.
BenchmarkDotNet command line interface are complicated and need to be simplified.
Currently, there are following options/arguments categories are exists. and these options are specified on flat hierarchy.
So it can't specify multiple config/job level options via command line interface.
### `Global` level options
- `--help`
- `--version`
- `--info`
- `--list`
### `Config` level options
- `--exporters`
- `--counters`
- `--memory`
- `--threading`
- `--exceptions`
- `--disasm`
- `--profiler`
- `--allStats`
- `--statisticalTest`
- `--artifacts`
- `--filter`
- `--hide`
- Options that are defined at [ConfigOptions](https://github.com/dotnet/BenchmarkDotNet/blob/master/src/BenchmarkDotNet/Configs/ConfigOptions.cs)
- `--maxWidth`
- `--buildTimeout`
- `--wakeLock`
### `Job` level options
Other that are not listed above.
Contributor guide
Research direction
Start with the linked PR discussion and the ConfigOptions.cs definition, then trace how the listed Global, Config, and Job options are currently represented. A complete result would define and document a simpler hierarchical CLI that supports multiple config- and job-level options, but the issue provides no concrete command shape or tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- cli
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 28/100