dotnet / dotnet/BenchmarkDotNet

Reorganize command line interface options/parameters

Open
#3,182 4 comments 0 reactions 0 assignees View on GitHub
Area:CommandLine
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.