| Index: git_cl.py
|
| ===================================================================
|
| --- git_cl.py (revision 256001)
|
| +++ git_cl.py (working copy)
|
| @@ -51,6 +51,10 @@
|
| GIT_INSTRUCTIONS_URL = 'http://code.google.com/p/chromium/wiki/UsingGit'
|
| CHANGE_ID = 'Change-Id:'
|
|
|
| +# Valid extensions for files we want to lint.
|
| +DEFAULT_LINT_REGEX = r"(.*\.cpp|.*\.cc|.*\.h)"
|
| +DEFAULT_LINT_IGNORE_REGEX = r"$^"
|
| +
|
| # Shortcut since it quickly becomes redundant.
|
| Fore = colorama.Fore
|
|
|
| @@ -423,6 +427,14 @@
|
| self.git_editor = self._GetConfig('core.editor', error_ok=True)
|
| return self.git_editor or None
|
|
|
| + def GetLintRegex(self):
|
| + return (self._GetRietveldConfig('cpplint-regex', error_ok=True) or
|
| + DEFAULT_LINT_REGEX)
|
| +
|
| + def GetLintIgnoreRegex(self):
|
| + return (self._GetRietveldConfig('cpplint-ignore-regex', error_ok=True) or
|
| + DEFAULT_LINT_IGNORE_REGEX)
|
| +
|
| def _GetRietveldConfig(self, param, **kwargs):
|
| return self._GetConfig('rietveld.' + param, **kwargs)
|
|
|
| @@ -1044,6 +1056,8 @@
|
| SetProperty('tree-status-url', 'STATUS', unset_error_ok=True)
|
| SetProperty('viewvc-url', 'VIEW_VC', unset_error_ok=True)
|
| SetProperty('bug-prefix', 'BUG_PREFIX', unset_error_ok=True)
|
| + SetProperty('cpplint-regex', 'LINT_REGEX', unset_error_ok=True)
|
| + SetProperty('cpplint-ignore-regex', 'LINT_IGNORE_REGEX', unset_error_ok=True)
|
|
|
| if 'GERRIT_HOST' in keyvals:
|
| RunGit(['config', 'gerrit.host', keyvals['GERRIT_HOST']])
|
| @@ -1366,6 +1380,51 @@
|
| return RunGit(['log', '--pretty=format:%s\n\n%b'] + log_args)
|
|
|
|
|
| +def CMDlint(parser, args):
|
| + """Runs cpplint on the current changelist."""
|
| + _, args = parser.parse_args(args)
|
| +
|
| + # Access to a protected member _XX of a client class
|
| + # pylint: disable=W0212
|
| + try:
|
| + import cpplint
|
| + import cpplint_chromium
|
| + except ImportError:
|
| + print "Your depot_tools is missing cpplint.py and/or cpplint_chromium.py."
|
| + return 1
|
| +
|
| + # Change the current working directory before calling lint so that it
|
| + # shows the correct base.
|
| + previous_cwd = os.getcwd()
|
| + os.chdir(settings.GetRoot())
|
| + try:
|
| + cl = Changelist()
|
| + change = cl.GetChange(cl.GetCommonAncestorWithUpstream(), None)
|
| + files = [f.LocalPath() for f in change.AffectedFiles()]
|
| +
|
| + # Process cpplints arguments if any.
|
| + filenames = cpplint.ParseArguments(args + files)
|
| +
|
| + white_regex = re.compile(settings.GetLintRegex())
|
| + black_regex = re.compile(settings.GetLintIgnoreRegex())
|
| + extra_check_functions = [cpplint_chromium.CheckPointerDeclarationWhitespace]
|
| + for filename in filenames:
|
| + if white_regex.match(filename):
|
| + if black_regex.match(filename):
|
| + print "Ignoring file %s" % filename
|
| + else:
|
| + cpplint.ProcessFile(filename, cpplint._cpplint_state.verbose_level,
|
| + extra_check_functions)
|
| + else:
|
| + print "Skipping file %s" % filename
|
| + finally:
|
| + os.chdir(previous_cwd)
|
| + print "Total errors found: %d\n" % cpplint._cpplint_state.error_count
|
| + if cpplint._cpplint_state.error_count != 0:
|
| + return 1
|
| + return 0
|
| +
|
| +
|
| def CMDpresubmit(parser, args):
|
| """Runs presubmit tests on the current changelist."""
|
| parser.add_option('-u', '--upload', action='store_true',
|
|
|