add clang_tidy properties to bp2build

Bug: 195029134
Test: m bp2build
Change-Id: I9ca2436ef792911be72788b6640287726a609e2f
diff --git a/cc/binary.go b/cc/binary.go
index a6d7507..d09e744 100644
--- a/cc/binary.go
+++ b/cc/binary.go
@@ -646,6 +646,8 @@
 		sdkAttributes: bp2BuildParseSdkAttributes(m),
 	}
 
+	m.convertTidyAttributes(&attrs.tidyAttributes)
+
 	return attrs
 }
 
@@ -698,4 +700,6 @@
 	Features bazel.StringListAttribute
 
 	sdkAttributes
+
+	tidyAttributes
 }
diff --git a/cc/bp2build.go b/cc/bp2build.go
index d6d052f..2f79cae 100644
--- a/cc/bp2build.go
+++ b/cc/bp2build.go
@@ -66,6 +66,26 @@
 	Native_coverage bazel.BoolAttribute
 
 	sdkAttributes
+
+	tidyAttributes
+}
+
+type tidyAttributes struct {
+	Tidy                  *bool
+	Tidy_flags            []string
+	Tidy_checks           []string
+	Tidy_checks_as_errors []string
+}
+
+func (m *Module) convertTidyAttributes(moduleAttrs *tidyAttributes) {
+	for _, f := range m.features {
+		if tidy, ok := f.(*tidyFeature); ok {
+			moduleAttrs.Tidy = tidy.Properties.Tidy
+			moduleAttrs.Tidy_flags = tidy.Properties.Tidy_flags
+			moduleAttrs.Tidy_checks = tidy.Properties.Tidy_checks
+			moduleAttrs.Tidy_checks_as_errors = tidy.Properties.Tidy_checks_as_errors
+		}
+	}
 }
 
 // groupSrcsByExtension partitions `srcs` into groups based on file extension.
diff --git a/cc/library.go b/cc/library.go
index a590b22..41a68e3 100644
--- a/cc/library.go
+++ b/cc/library.go
@@ -2791,6 +2791,8 @@
 		Runtime_deps:                      linkerAttrs.runtimeDeps,
 	}
 
+	module.convertTidyAttributes(&commonAttrs.tidyAttributes)
+
 	var attrs interface{}
 	if isStatic {
 		commonAttrs.Deps.Add(baseAttributes.protoDependency)
diff --git a/cc/test.go b/cc/test.go
index 715c537..92055fa 100644
--- a/cc/test.go
+++ b/cc/test.go
@@ -643,6 +643,8 @@
 
 	Gtest    bool
 	Isolated bool
+
+	tidyAttributes
 }
 
 // testBinaryBp2build is the bp2build converter for cc_test modules. A cc_test's
@@ -676,6 +678,8 @@
 		}
 	}
 
+	m.convertTidyAttributes(&testBinaryAttrs.tidyAttributes)
+
 	for _, propIntf := range m.GetProperties() {
 		if testLinkerProps, ok := propIntf.(*TestLinkerProperties); ok {
 			testBinaryAttrs.Gtest = proptools.BoolDefault(testLinkerProps.Gtest, true)