<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/101440>101440</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            `run-clang-tidy` does not accept `-p compile_commands.json`, only directories, unlike `clang-tidy` itself
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang-tidy
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          lf-
      </td>
    </tr>
</table>

<pre>
    Observe the following: clang-tidy accepts a path to a compilation database:
```
lix/lix3 » clang-tidy --checks='-*,bugprone-*' -p build/meson/clang-tidy/compile_commands.json src/libutil/args.cc
38307 warnings generated.
../src/libutil/args.cc:91:37: warning: narrowing conversion from 'size_t' (aka 'unsigned long') to signed type 'typename iterator_tr
aits<_List_iterator<basic_string<char>>>::difference_type' (aka 'long') is implementation-defined [bugprone-narrowing-conversions]
   91 |         *std::next(cmdline.begin(), n - 1) += completionMarker;
      |                                     ^
Suppressed 38314 warnings (38306 in non-user code, 8 NOLINT).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as we
ll.
```

Oops, this is another bug in run-clang-tidy I hit by accident: the arg parsing cannot accept double dashes in args. But back to the main program.
```
lix/lix3 » run-clang-tidy --checks='-*,bugprone-*' -p build/meson/clang-tidy/compile_commands.json src/libutil/args.cc
usage: run-clang-tidy [-h] [-allow-enabling-alpha-checkers] [-clang-tidy-binary PATH] [-clang-apply-replacements-binary PATH]
                      [-checks CHECKS] [-config CONFIG | -config-file CONFIG_FILE] [-header-filter HEADER_FILTER]
                      [-line-filter LINE_FILTER] [-export-fixes filename] [-j J] [-fix] [-format] [-style STYLE]
                      [-use-color [USE_COLOR]] [-p BUILD_PATH] [-extra-arg EXTRA_ARG] [-extra-arg-before EXTRA_ARG_BEFORE]
                      [-quiet] [-load PLUGINS] [-warnings-as-errors WARNINGS_AS_ERRORS]
                      [files ...]
run-clang-tidy: error: unrecognized arguments: --checks=-*,bugprone-*
```

However, with run-clang-tidy, this is not the case, which is busted:

```
lix/lix3 » run-clang-tidy -checks='-*,bugprone-*' -p build/meson/clang-tidy/compile_commands.json src/libutil/args.cc
Enabled checks:
    bugprone-argument-comment
    ... more elided ...
    bugprone-virtual-near-miss

Traceback (most recent call last):
  File "/nix/store/cmxvjk0wx47kznqs0ny84axypsajk08v-clang-17.0.6/bin/run-clang-tidy", line 505, in <module>
    main()
  File "/nix/store/cmxvjk0wx47kznqs0ny84axypsajk08v-clang-17.0.6/bin/run-clang-tidy", line 428, in main
    database = json.load(open(os.path.join(build_path, db_path)))
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
NotADirectoryError: [Errno 20] Not a directory: 'build/meson/clang-tidy/compile_commands.json/compile_commands.json'
```

clang version: 17.0.6 from nixpkgs
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEV8ly4zgS_RrokkEGBWo96EBtVZ7x2B22K2bmpADJFAkLBNgAKEv19RNJUYtdS_f0oUvBMLFl4uX2mBbOyUIjzthwzobLnmh8aexMbYNeavLj7DF1aPcIvkTYGqXMm9QFixPIlNBF4GV-BJFlWHsHAmrhS_AGBGSmqqUSXhoNufAiFQ5ZnLBoyaKEjaLuaadKHhhfK3mIgS04m89vlQdBVmK2cyxeMj4OGE8YX6RNUVuj8TQdQ1BD2kiVM76u0BnN-PqqgiYtGtxkpqqEzl346owGZ7P23rTxUjG-FrZwYZadQMWTOBrDm7Ba6sJBgRqt8JiHp-0wZHz9IwVxMu2zOInH5KhOBQ21sLZ1IGRG79E68s7WmgoYHzv5FTeerGF8InaC1hrdRicHZXTB-JjxKbm3W_THGukUvbWoEKQnjMZuvD2hFNI7Fi8299L5zXmXxYtUOJltnLctsEVWCsvi1flJWJzkcrtFizrDDal_D-sGjXQgq1phhdq30Q5y3EpCx4bzS5guhgdXwx0bLk8oAWDaBzZewPnHeOJ8fkKi8eAZn2RVrqTGMMVCasYnjE8ZX4CGAPoEhPE5i5dt3ikkIP8SdoeWxfPLJaT45pKf_dhwdRJ7buraonOYQzyJ-4NrRjA-oRwZgdSgjQ4ahxYykyPBmsDD4_3dwwvj0y5hvjiEoESRow22UnmCtgwZTyiguXS1EkdAa411p5QQSrV63dF5rOAk6kJoFZ0WO33uRyrei4Jw8IZdyanwu6V4-vtoakdW-JLC60Bo40u0kDYFWWsbHdxU6B2U0kPa8oDMUXtKdeILYQuohXVtwgutje-oAnLTpAohF65ERyrbyoF54yEV2Y7sIQWVkBpqaworqu_j_ZY6PoD7VfTROFEQ4X3Ew4bzoGTDZTsQxKcBapEqqg2h6lKc8KJ150NX4SCVWtgj_Ja8fH6_K-paHQOLtRJZW4ruw9nbGvg21-edk2DxebX45_NFt9FbWcDi8WF996ktnW6JEhi79c367n51lniX3_B5lSxXT3TgZfX0J0BQfZ9l7-8eVlfJdhsPtbE-2MoDOiAExHnnzVf4x3m4lYfL0NhK-PPM-aNCeH75bwv4j9A0DoPMKGNp9uV5tVk83j-2ZnTqaph_ubtfbm7DgQdvRUCJv_rPy1OySZ4-fbMVpLg1Fq8nNvPV-vHpz2D6vZF4MUcZkcNv918-3T1cQnZmp0C4oGOCfydPD3cPn543yfNm9fT0-PT8xxeRdx2EYXg5-j6NKbFb9TRotMXMFFp-xZwKuWkTkHZuiu97lfdjAvps3nCPljjoTfryQxHdUhORClFFRv0FHS9lVtJG2jiP-bXl-Gvs8WvIY0WMgDmcb0-u4brcfnZ0QHqJdC9HwjCEihIMlcwxb8P4rfxeWt8IFWgUNqikc7d-erEiw5aJGZ9UxnmwmKH2kNFXSQnn6fN7xbUmPmCcM77WrU-dNxbJ-Oqwf91Fb4fBePdV_-4ifZwMxOFYO_G6iyb7ztn9cRiFI8bXKX3b1x_DzSmyxA4wjIY0lhpYvKhM3iikluViHn0xuubg74Y2oGtbaC2IC6Rz9wvUnlDsQypcxiemRsJqXEhtc_hqWuhtLm1ohbTlaTecds9P6rZrW_7-p8X0YHyylBYzb-xxdeYGNpyvrNUGeEQU9UAtAOTnY-0JPv7_y-fH6-OfsEqrF7r2k-4-xfbUK2l5qHeF6-WzOJ_GU9HDWX_M-WA8ivujXjkbjqIMR6P-dJRG0TiNt9PJeChQjCKMR9u435MzHvFBNIn6UT-exKOwH_OIp1Pkk5jzPEc2iLASUoVK7avQ2KInnWtw1o_6g0HUUyJF5dr_wzh_n2LDZc_OSCpIm8KxQaSk8-6qx0uvcMZG0YfsHEWQGzyRZNd5sVEU1PB9540iSjmj1fESIoltI9hoJXdIwu-1S-9QbXuNVbPS-7qlKr5mfF1IXzZpmJmKWE7tz6-gtuYVM8_4ujXeMb7u7N_P-P8CAAD___47akM">