make tidy attribute tri-state
Bazel boolean attributes can only support true or false states, but the clang-tidy logic changes for modules which don't set a specific value. Therefore, the tidy attribute should really be a tri-state of "true", "false", or "" (unset). Test: b test //build/bazel/rules/... Bug: 268681923 Change-Id: I85fbaa612d175f475757db806cea6c018901fe3e
This commit is contained in:
@@ -3640,8 +3640,17 @@ func TestCcLibraryWithTidy(t *testing.T) {
|
|||||||
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
ModuleTypeUnderTestFactory: cc.LibraryFactory,
|
||||||
Blueprint: `
|
Blueprint: `
|
||||||
cc_library_static {
|
cc_library_static {
|
||||||
name: "foo",
|
name: "foo",
|
||||||
srcs: ["foo.cpp"],
|
srcs: ["foo.cpp"],
|
||||||
|
}
|
||||||
|
cc_library_static {
|
||||||
|
name: "foo-no-tidy",
|
||||||
|
srcs: ["foo.cpp"],
|
||||||
|
tidy: false,
|
||||||
|
}
|
||||||
|
cc_library_static {
|
||||||
|
name: "foo-tidy",
|
||||||
|
srcs: ["foo.cpp"],
|
||||||
tidy: true,
|
tidy: true,
|
||||||
tidy_checks: ["check1", "check2"],
|
tidy_checks: ["check1", "check2"],
|
||||||
tidy_checks_as_errors: ["check1error", "check2error"],
|
tidy_checks_as_errors: ["check1error", "check2error"],
|
||||||
@@ -3652,7 +3661,16 @@ cc_library_static {
|
|||||||
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
|
MakeBazelTarget("cc_library_static", "foo", AttrNameToString{
|
||||||
"local_includes": `["."]`,
|
"local_includes": `["."]`,
|
||||||
"srcs": `["foo.cpp"]`,
|
"srcs": `["foo.cpp"]`,
|
||||||
"tidy": `True`,
|
}),
|
||||||
|
MakeBazelTarget("cc_library_static", "foo-no-tidy", AttrNameToString{
|
||||||
|
"local_includes": `["."]`,
|
||||||
|
"srcs": `["foo.cpp"]`,
|
||||||
|
"tidy": `"never"`,
|
||||||
|
}),
|
||||||
|
MakeBazelTarget("cc_library_static", "foo-tidy", AttrNameToString{
|
||||||
|
"local_includes": `["."]`,
|
||||||
|
"srcs": `["foo.cpp"]`,
|
||||||
|
"tidy": `"local"`,
|
||||||
"tidy_checks": `[
|
"tidy_checks": `[
|
||||||
"check1",
|
"check1",
|
||||||
"check2",
|
"check2",
|
||||||
|
@@ -71,7 +71,7 @@ type staticOrSharedAttributes struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type tidyAttributes struct {
|
type tidyAttributes struct {
|
||||||
Tidy *bool
|
Tidy *string
|
||||||
Tidy_flags []string
|
Tidy_flags []string
|
||||||
Tidy_checks []string
|
Tidy_checks []string
|
||||||
Tidy_checks_as_errors []string
|
Tidy_checks_as_errors []string
|
||||||
@@ -82,7 +82,15 @@ type tidyAttributes struct {
|
|||||||
func (m *Module) convertTidyAttributes(ctx android.BaseMutatorContext, moduleAttrs *tidyAttributes) {
|
func (m *Module) convertTidyAttributes(ctx android.BaseMutatorContext, moduleAttrs *tidyAttributes) {
|
||||||
for _, f := range m.features {
|
for _, f := range m.features {
|
||||||
if tidy, ok := f.(*tidyFeature); ok {
|
if tidy, ok := f.(*tidyFeature); ok {
|
||||||
moduleAttrs.Tidy = tidy.Properties.Tidy
|
var tidyAttr *string
|
||||||
|
if tidy.Properties.Tidy != nil {
|
||||||
|
if *tidy.Properties.Tidy {
|
||||||
|
tidyAttr = proptools.StringPtr("local")
|
||||||
|
} else {
|
||||||
|
tidyAttr = proptools.StringPtr("never")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
moduleAttrs.Tidy = tidyAttr
|
||||||
moduleAttrs.Tidy_flags = tidy.Properties.Tidy_flags
|
moduleAttrs.Tidy_flags = tidy.Properties.Tidy_flags
|
||||||
moduleAttrs.Tidy_checks = tidy.Properties.Tidy_checks
|
moduleAttrs.Tidy_checks = tidy.Properties.Tidy_checks
|
||||||
moduleAttrs.Tidy_checks_as_errors = tidy.Properties.Tidy_checks_as_errors
|
moduleAttrs.Tidy_checks_as_errors = tidy.Properties.Tidy_checks_as_errors
|
||||||
|
Reference in New Issue
Block a user