api: Support disabling some toolchain linters

This CL adds support for new fields in the LinterRequest proto
introduced in CL:3774610 to selectively disable some linters. THis
allows us to target a specific set of linters in calls from builders
based on which file extensions are found.

BUG=b:239625334
TEST=call_scripts

Cq-Depend: chromium:3774610
Change-Id: Ic48accde2ceaed7fe0885d9872a8949dc25858c8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/3777561
Reviewed-by: Alex Klein <saklein@chromium.org>
Tested-by: Ryan Beltran <ryanbeltran@chromium.org>
Commit-Queue: Ryan Beltran <ryanbeltran@chromium.org>
diff --git a/api/controller/toolchain.py b/api/controller/toolchain.py
index 58a5636..520c21b 100644
--- a/api/controller/toolchain.py
+++ b/api/controller/toolchain.py
@@ -352,9 +352,19 @@
       input_proto.sysroot.path,
       differential=input_proto.filter_modified)
 
-  findings = build_linter.emerge_with_linting(use_clippy=True,
-                                              use_tidy=True,
-                                              use_golint=True)
+  use_clippy = (
+      toolchain_pb2.LinterFinding.CARGO_CLIPPY
+      not in input_proto.disabled_linters)
+  use_tidy = (
+      toolchain_pb2.LinterFinding.CLANG_TIDY
+      not in input_proto.disabled_linters)
+  use_golint = (
+      toolchain_pb2.LinterFinding.GO_LINT
+      not in input_proto.disabled_linters)
+
+  findings = build_linter.emerge_with_linting(use_clippy=use_clippy,
+                                              use_tidy=use_tidy,
+                                              use_golint=use_golint)
 
   for finding in findings:
     locations = []