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))