Skip to content

Commit

Permalink
Presubmit enforce that DCHECK_IS_ON() does not forget the braces.
Browse files Browse the repository at this point in the history
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/

R=phajdan.jr@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#356099}
  • Loading branch information
danakj authored and Commit bot committed Oct 26, 2015
1 parent 33dd52f commit 61c1aa2
Showing 1 changed file with 19 additions and 1 deletion.
20 changes: 19 additions & 1 deletion PRESUBMIT.py
Original file line number Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ def _CheckNoIOStreamInHeaders(input_api, output_api):


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'))):
Expand All @@ -374,6 +374,23 @@ def _CheckNoUNIT_TESTInSourceFiles(input_api, output_api):
'\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:
Expand Down Expand Up @@ -1640,6 +1657,7 @@ def _CommonChecks(input_api, output_api):
_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))
Expand Down

0 comments on commit 61c1aa2

Please sign in to comment.