| 597 | } |
| 598 | |
| 599 | void ParseCommandLineFlags(int* argc, char** argv) { |
| 600 | using namespace benchmark; |
| 601 | BenchmarkReporter::Context::executable_name = |
| 602 | (argc && *argc > 0) ? argv[0] : "unknown"; |
| 603 | for (int i = 1; argc && i < *argc; ++i) { |
| 604 | if (ParseBoolFlag(argv[i], "benchmark_list_tests", |
| 605 | &FLAGS_benchmark_list_tests) || |
| 606 | ParseStringFlag(argv[i], "benchmark_filter", &FLAGS_benchmark_filter) || |
| 607 | ParseDoubleFlag(argv[i], "benchmark_min_time", |
| 608 | &FLAGS_benchmark_min_time) || |
| 609 | ParseDoubleFlag(argv[i], "benchmark_min_warmup_time", |
| 610 | &FLAGS_benchmark_min_warmup_time) || |
| 611 | ParseInt32Flag(argv[i], "benchmark_repetitions", |
| 612 | &FLAGS_benchmark_repetitions) || |
| 613 | ParseBoolFlag(argv[i], "benchmark_enable_random_interleaving", |
| 614 | &FLAGS_benchmark_enable_random_interleaving) || |
| 615 | ParseBoolFlag(argv[i], "benchmark_report_aggregates_only", |
| 616 | &FLAGS_benchmark_report_aggregates_only) || |
| 617 | ParseBoolFlag(argv[i], "benchmark_display_aggregates_only", |
| 618 | &FLAGS_benchmark_display_aggregates_only) || |
| 619 | ParseStringFlag(argv[i], "benchmark_format", &FLAGS_benchmark_format) || |
| 620 | ParseStringFlag(argv[i], "benchmark_out", &FLAGS_benchmark_out) || |
| 621 | ParseStringFlag(argv[i], "benchmark_out_format", |
| 622 | &FLAGS_benchmark_out_format) || |
| 623 | ParseStringFlag(argv[i], "benchmark_color", &FLAGS_benchmark_color) || |
| 624 | ParseBoolFlag(argv[i], "benchmark_counters_tabular", |
| 625 | &FLAGS_benchmark_counters_tabular) || |
| 626 | ParseStringFlag(argv[i], "benchmark_perf_counters", |
| 627 | &FLAGS_benchmark_perf_counters) || |
| 628 | ParseKeyValueFlag(argv[i], "benchmark_context", |
| 629 | &FLAGS_benchmark_context) || |
| 630 | ParseStringFlag(argv[i], "benchmark_time_unit", |
| 631 | &FLAGS_benchmark_time_unit) || |
| 632 | ParseInt32Flag(argv[i], "v", &FLAGS_v)) { |
| 633 | for (int j = i; j != *argc - 1; ++j) argv[j] = argv[j + 1]; |
| 634 | |
| 635 | --(*argc); |
| 636 | --i; |
| 637 | } else if (IsFlag(argv[i], "help")) { |
| 638 | PrintUsageAndExit(); |
| 639 | } |
| 640 | } |
| 641 | for (auto const* flag : |
| 642 | {&FLAGS_benchmark_format, &FLAGS_benchmark_out_format}) { |
| 643 | if (*flag != "console" && *flag != "json" && *flag != "csv") { |
| 644 | PrintUsageAndExit(); |
| 645 | } |
| 646 | } |
| 647 | SetDefaultTimeUnitFromFlag(FLAGS_benchmark_time_unit); |
| 648 | if (FLAGS_benchmark_color.empty()) { |
| 649 | PrintUsageAndExit(); |
| 650 | } |
| 651 | for (const auto& kv : FLAGS_benchmark_context) { |
| 652 | AddCustomContext(kv.first, kv.second); |
| 653 | } |
| 654 | } |
| 655 | |
| 656 | int InitializeStreams() { |
no test coverage detected