Presubmit enforce that DCHECK_IS_ON() does not forget the braces.

If you forget the braces, then it will just ignore what was inside
the #if, which is not what you wanted.

Long awaited followup to https://codereview.chromium.org/842523002/

[email protected]

Review URL: https://codereview.chromium.org/1407033004

Cr-Commit-Position: refs/heads/master@{#356099}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index e3ee9c47..293d9dd3 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -358,7 +358,7 @@
 
 
 def _CheckNoUNIT_TESTInSourceFiles(input_api, output_api):
-  """Checks to make sure no source files use UNIT_TEST"""
+  """Checks to make sure no source files use UNIT_TEST."""
   problems = []
   for f in input_api.AffectedFiles():
     if (not f.LocalPath().endswith(('.cc', '.mm'))):
@@ -374,6 +374,23 @@
       '\n'.join(problems))]
 
 
+def _CheckDCHECK_IS_ONHasBraces(input_api, output_api):
+  """Checks to make sure DCHECK_IS_ON() does not skip the braces."""
+  errors = []
+  pattern = input_api.re.compile(r'DCHECK_IS_ON(?!\(\))',
+                                 input_api.re.MULTILINE)
+  for f in input_api.AffectedSourceFiles(input_api.FilterSourceFile):
+    if (not f.LocalPath().endswith(('.cc', '.mm', '.h'))):
+      continue
+    for lnum, line in f.ChangedContents():
+      if input_api.re.search(pattern, line):
+          errors.append(output_api.PresubmitError(
+            ('%s:%d: Use of DCHECK_IS_ON() must be written as "#if ' +
+             'DCHECK_IS_ON()", not forgetting the braces.')
+            % (f.LocalPath(), lnum)))
+  return errors
+
+
 def _FindHistogramNameInLine(histogram_name, line):
   """Tries to find a histogram name or prefix in a line."""
   if not "affected-histogram" in line:
@@ -1640,6 +1657,7 @@
       _CheckNoProductionCodeUsingTestOnlyFunctions(input_api, output_api))
   results.extend(_CheckNoIOStreamInHeaders(input_api, output_api))
   results.extend(_CheckNoUNIT_TESTInSourceFiles(input_api, output_api))
+  results.extend(_CheckDCHECK_IS_ONHasBraces(input_api, output_api))
   results.extend(_CheckNoNewWStrings(input_api, output_api))
   results.extend(_CheckNoDEPSGIT(input_api, output_api))
   results.extend(_CheckNoBannedFunctions(input_api, output_api))