Add clang-tidy.sh to filter out troublesome flags.
* Some flags are accepted by clang but not clang-tidy.
They could cause the diagnostic-unused-command-line-argument warning.
Flag -flto messed up the -I flags.
* Add clang-diagnostic-unused-command-line-argument to
default clang-tidy checks.
* Move CLANG_TIDY_UNKNOWN_CFLAGS to build/make/core/clang/tidy.mk.
Bug: 111850071
Bug: 111885396
Test: build with WITH_TIDY=1
Change-Id: Iabeeb27715acf83ef6aafe3e77206b9a01a0d889
diff --git a/cc/builder.go b/cc/builder.go
index 51d3195..5a77d3e 100644
--- a/cc/builder.go
+++ b/cc/builder.go
@@ -150,10 +150,12 @@
},
"crossCompile")
+ _ = pctx.SourcePathVariable("tidyPath", "build/soong/scripts/clang-tidy.sh")
+
clangTidy = pctx.AndroidStaticRule("clangTidy",
blueprint.RuleParams{
- Command: "rm -f $out && ${config.ClangBin}/clang-tidy $tidyFlags $in -- $cFlags && touch $out",
- CommandDeps: []string{"${config.ClangBin}/clang-tidy"},
+ Command: "rm -f $out && CLANG_TIDY=${config.ClangBin}/clang-tidy $tidyPath $tidyFlags $in -- $cFlags && touch $out",
+ CommandDeps: []string{"${config.ClangBin}/clang-tidy", "$tidyPath"},
},
"cFlags", "tidyFlags")
diff --git a/cc/config/tidy.go b/cc/config/tidy.go
index 3d1a0a0..67f92a2 100644
--- a/cc/config/tidy.go
+++ b/cc/config/tidy.go
@@ -19,18 +19,6 @@
"strings"
)
-// clang-tidy doesn't recognize every flag that clang does. This is unlikely to
-// be a complete list, but we can populate this with the ones we know to avoid
-// issues with clang-diagnostic-unused-command-line-argument.
-// b/111885396: -flto affected header include directory;
-// -fsanitize and -fwhole-program-vtables need -flto.
-var ClangTidyUnknownCflags = sorted([]string{
- "-Wa,%",
- "-flto",
- "-fsanitize=%",
- "-fwhole-program-vtables",
-})
-
func init() {
// Most Android source files are not clang-tidy clean yet.
// Global tidy checks include only google*, performance*,
@@ -42,6 +30,7 @@
}
return strings.Join([]string{
"-*",
+ "clang-diagnostic-unused-command-line-argument",
"google*",
"misc-macro-parentheses",
"performance*",
@@ -58,6 +47,7 @@
}
return strings.Join([]string{
"-*",
+ "clang-diagnostic-unused-command-line-argument",
"google*",
"-google-build-using-namespace",
"-google-default-arguments",
diff --git a/cc/makevars.go b/cc/makevars.go
index 072821c..c3ff4ce 100644
--- a/cc/makevars.go
+++ b/cc/makevars.go
@@ -75,7 +75,6 @@
ctx.Strict("LLVM_OBJCOPY", "${config.ClangBin}/llvm-objcopy")
ctx.Strict("LLVM_STRIP", "${config.ClangBin}/llvm-strip")
ctx.Strict("PATH_TO_CLANG_TIDY", "${config.ClangBin}/clang-tidy")
- ctx.Strict("CLANG_TIDY_UNKNOWN_CFLAGS", strings.Join(config.ClangTidyUnknownCflags, " "))
ctx.StrictSorted("CLANG_CONFIG_UNKNOWN_CFLAGS", strings.Join(config.ClangUnknownCflags, " "))
ctx.Strict("RS_LLVM_PREBUILTS_VERSION", "${config.RSClangVersion}")