Add script to run clang-tidy over all code
- Add a DEP on the repo that contains the Tricium script to run
clang-tidy (because for some reason we don't have the "official"
run-clang-tidy.py, and it's not practical to invoke directly).
- Add a wrapper script that limits clang-tidy to running only on our
source files.
- Update the instructions and add a bunch of info on how to do things.
- Switch .clang-tidy to a more maintainable format.
- Disable readability-use-concise-preprocessor-directives because it
triggers a lot and isn't important.
Example output:
$ tools/run-tricium-clang-tidy.py
usage: run-tricium-clang-tidy.py [-h] --clean | --no-clean [--stdout-only]
outdir (--default | --all | sources ...)
run-tricium-clang-tidy.py: error: the following arguments are required: --clean/--no-clean, outdir
$ tools/run-tricium-clang-tidy.py --help
usage: run-tricium-clang-tidy.py [-h] --clean | --no-clean [--stdout-only]
outdir (--default | --all | sources ...)
Run clang-tidy on Dawn source files and directories.
positional arguments:
outdir The build directory, e.g., out/debug
sources Specific source files and/or directories to run clang-tidy on.
options:
-h, --help show this help message and exit
--clean, --no-clean Pass --clean to clean the build before building and running clang-tidy.
Pass --no-clean to skip that, and promise there are no leftover no-
longer-used generated files from old Dawn revisions.
--stdout-only Print the summary to stdout instead of saving the JSON and summary files
to disk. Useful when iterating on a specific small directory of files.
--default Use default sources (all of our source files).
--all Run across all C/C++ files known to ninja (not recommended).
$ tools/run-tricium-clang-tidy.py --no-clean out/d src/utils
...
Full findings JSON saved to clang-tidy-2026-06-30_222318-findings.json
Readable summary saved to clang-tidy-2026-06-30_222318-summary.txt
$ cat clang-tidy-2026-06-30_222318-summary.txt
Command line:
tools/run-tricium-clang-tidy.py --no-clean out/d src/utils
Files that failed with no associated diagnostics:
Compiler diagnostics (clang-diagnostic-*):
Clang-Tidy diagnostics:
src/utils/assert.cc:46: do not use inline assembler in safety-critical code [portability-no-assembler]
src/utils/chromium_test_compat/chromium_test_compat.cc:62: C-style casts are discouraged; use static_cast [modernize-avoid-c-style-cast]
src/utils/span.h:170: single-argument constructors must be marked explicit to avoid unintentional implicit conversions [cppcoreguidelines-explicit-constructor]
src/utils/span.h:175: single-argument constructors must be marked explicit to avoid unintentional implicit conversions [cppcoreguidelines-explicit-constructor]
src/utils/underlying_type.h:62: redundant 'typename' [readability-redundant-typename]
src/utils/underlying_type.h:67: redundant 'typename' [readability-redundant-typename]
Bug: 501491694
Change-Id: Ieae94b4bf7f68cf613bcbec6c1116a1dcafc02cf
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/314375
Reviewed-by: dan sinclair <dsinclair@chromium.org>
Commit-Queue: Kai Ninomiya <kainino@chromium.org>
Dawn is an open-source and cross-platform implementation of the WebGPU standard. More precisely it implements webgpu.h that is a one-to-one mapping with the WebGPU IDL. Dawn is meant to be integrated as part of a larger system and is the underlying implementation of WebGPU in Chromium.
Dawn provides several WebGPU building blocks:
webgpu.h version that Dawn implements.webgpu.h.Helpful links:
Developer documentation:
User documentation: (TODO, figure out what overlaps with the webgpu.h docs)
BSD 3-Clause License, please see LICENSE.
This is not an officially supported Google product.