Add build support for clang-tidy and clang build metrics #3150
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
clang-tidy support enables the llvm extras linter to catch a wide array of problems and improve the build. It is off by default. Currently all rules are enabled, but this will fail the build. We will need to turn these rules on one by one.
Usage:
install llvm from homebrew, and make sure clang-tidy is in your path
./configure --with-clang-tidy
Clang build metrics enables a new features in Clang 9.0 which generates chrome://tracing (and similar tools) compatible json files for every compiled object that details where time was spent for that particular target. There are additional tools (such as ClangBuildAnalyzer) that will combine these files to give an overall high-level view of where time is spent in the build. I will share the detailed output from this internally.
Usage:
./configure --with-clang-metrics