Disable external/grpc-grpc even with TIDY_EXTERNAL_VENDOR=1

Some projects do not allow or fix tidy warnings to
avoid warnings-as-errors. They should not run
clang-tidy even with TIDY_EXTERNAL_VENDOR=1.

Bug: 244631413
Test: presubmit; TIDY_EXTERNAL_VENDOR=1 make tidy-external_subset
Change-Id: Id86a55c222fdad813c1c3434245c86bb97d0cad6
This commit is contained in:
Chih-Hung Hsieh 2022-10-18 14:43:27 -07:00
parent d21c46a5f8
commit ff2efae9b0
2 changed files with 15 additions and 7 deletions

View file

@ -205,11 +205,18 @@ func TidyChecksForDir(dir string) string {
return tidyDefault
}
func NoClangTidyForDir(dir string) bool {
func neverTidyForDir(dir string) bool {
// This function can be extended if tidy needs to be disabled for more directories.
return strings.HasPrefix(dir, "external/grpc-grpc")
}
func NoClangTidyForDir(allowExternalVendor bool, dir string) bool {
// Tidy can be disable for a module in dir, if the dir is "neverTidyForDir",
// or if it belongs to external|vendor and !allowExternalVendor.
// This function depends on TidyChecksForDir, which selects tidyExternalVendor
// checks for external/vendor projects. For those projects we disable clang-tidy
// by default, unless some modules enable clang-tidy with tidy:true.
return TidyChecksForDir(dir) == tidyExternalVendor
// checks for external/vendor projects.
return neverTidyForDir(dir) ||
(!allowExternalVendor && TidyChecksForDir(dir) == tidyExternalVendor)
}
// Returns a globally disabled tidy checks, overriding locally selected checks.

View file

@ -79,9 +79,10 @@ func (tidy *tidyFeature) flags(ctx ModuleContext, flags Flags) Flags {
// Some projects like external/* and vendor/* have clang-tidy disabled by default,
// unless they are enabled explicitly with the "tidy:true" property or
// when TIDY_EXTERNAL_VENDOR is set to true.
if !ctx.Config().IsEnvTrue("TIDY_EXTERNAL_VENDOR") &&
!proptools.Bool(tidy.Properties.Tidy) &&
config.NoClangTidyForDir(ctx.ModuleDir()) {
if !proptools.Bool(tidy.Properties.Tidy) &&
config.NoClangTidyForDir(
ctx.Config().IsEnvTrue("TIDY_EXTERNAL_VENDOR"),
ctx.ModuleDir()) {
return flags
}
// If not explicitly disabled, set flags.Tidy to generate .tidy rules.