Support calling clang-tidy in the compiler wrapper.
BUG=chromium:773875
TEST=unit test
Change-Id: Iba2a8c38c5542b6289373e8c8e97e2e671008aef
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/toolchain-utils/+/1691114
Reviewed-by: Tobias Bosch <tbosch@google.com>
Tested-by: Tobias Bosch <tbosch@google.com>
diff --git a/compiler_wrapper/compiler_wrapper.go b/compiler_wrapper/compiler_wrapper.go
index e5b7234..1eacb57 100644
--- a/compiler_wrapper/compiler_wrapper.go
+++ b/compiler_wrapper/compiler_wrapper.go
@@ -79,13 +79,20 @@
}
clangSyntax := processClangSyntaxFlag(mainBuilder)
if mainBuilder.target.compilerType == clangType {
- compilerCmd, err = calcClangCommand(mainBuilder)
+ cSrcFile, useClangTidy := processClangTidyFlags(mainBuilder)
+ compilerCmd, err = calcClangCommand(useClangTidy, mainBuilder)
if err != nil {
return nil, exitCode, err
}
+ if useClangTidy {
+ if err := runClangTidy(env, compilerCmd, cSrcFile); err != nil {
+ return nil, exitCode, err
+ }
+ }
} else {
if clangSyntax {
- clangCmd, err := calcClangCommand(mainBuilder.clone())
+ forceLocal := false
+ clangCmd, err := calcClangCommand(forceLocal, mainBuilder.clone())
if err != nil {
return nil, 0, err
}
@@ -100,14 +107,16 @@
return compilerCmd, exitCode, nil
}
-func calcClangCommand(builder *commandBuilder) (*command, error) {
+func calcClangCommand(forceLocal bool, builder *commandBuilder) (*command, error) {
sysroot := processSysrootFlag(builder)
builder.addPreUserArgs(builder.cfg.clangFlags...)
calcCommonPreUserArgs(builder)
if err := processClangFlags(builder); err != nil {
return nil, err
}
- processGomaCCacheFlags(sysroot, builder)
+ if !forceLocal {
+ processGomaCCacheFlags(sysroot, builder)
+ }
return builder.build(), nil
}