Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: presubmit_canned_checks.py

Issue 1234333002: Don't throw "line too long" presubmit error on python import statements. (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Also respect pylint disable Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Generic presubmit checks that can be reused by other presubmit checks.""" 5 """Generic presubmit checks that can be reused by other presubmit checks."""
6 6
7 import os as _os 7 import os as _os
8 _HERE = _os.path.dirname(_os.path.abspath(__file__)) 8 _HERE = _os.path.dirname(_os.path.abspath(__file__))
9 9
10 # Justifications for each filter: 10 # Justifications for each filter:
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 # Language specific exceptions to max line length. 338 # Language specific exceptions to max line length.
339 # '.h' is considered an obj-c file extension, since OBJC_EXCEPTIONS are a 339 # '.h' is considered an obj-c file extension, since OBJC_EXCEPTIONS are a
340 # superset of CPP_EXCEPTIONS. 340 # superset of CPP_EXCEPTIONS.
341 CPP_FILE_EXTS = ('c', 'cc') 341 CPP_FILE_EXTS = ('c', 'cc')
342 CPP_EXCEPTIONS = ('#define', '#endif', '#if', '#include', '#pragma') 342 CPP_EXCEPTIONS = ('#define', '#endif', '#if', '#include', '#pragma')
343 JAVA_FILE_EXTS = ('java',) 343 JAVA_FILE_EXTS = ('java',)
344 JAVA_EXCEPTIONS = ('import ', 'package ') 344 JAVA_EXCEPTIONS = ('import ', 'package ')
345 OBJC_FILE_EXTS = ('h', 'm', 'mm') 345 OBJC_FILE_EXTS = ('h', 'm', 'mm')
346 OBJC_EXCEPTIONS = ('#define', '#endif', '#if', '#import', '#include', 346 OBJC_EXCEPTIONS = ('#define', '#endif', '#if', '#import', '#include',
347 '#pragma') 347 '#pragma')
348 PY_FILE_EXTS = ('py')
349 PY_EXCEPTIONS = ('import', 'from')
348 350
349 LANGUAGE_EXCEPTIONS = [ 351 LANGUAGE_EXCEPTIONS = [
350 (CPP_FILE_EXTS, CPP_EXCEPTIONS), 352 (CPP_FILE_EXTS, CPP_EXCEPTIONS),
351 (JAVA_FILE_EXTS, JAVA_EXCEPTIONS), 353 (JAVA_FILE_EXTS, JAVA_EXCEPTIONS),
352 (OBJC_FILE_EXTS, OBJC_EXCEPTIONS), 354 (OBJC_FILE_EXTS, OBJC_EXCEPTIONS),
355 (PY_FILE_EXTS, PY_EXCEPTIONS),
353 ] 356 ]
354 357
355 def no_long_lines(file_extension, line): 358 def no_long_lines(file_extension, line):
356 # Check for language specific exceptions. 359 # Check for language specific exceptions.
357 if any(file_extension in exts and line.startswith(exceptions) 360 if any(file_extension in exts and line.startswith(exceptions)
358 for exts, exceptions in LANGUAGE_EXCEPTIONS): 361 for exts, exceptions in LANGUAGE_EXCEPTIONS):
359 return True 362 return True
360 363
361 file_maxlen = maxlens.get(file_extension, maxlens['']) 364 file_maxlen = maxlens.get(file_extension, maxlens[''])
362 # Stupidly long symbols that needs to be worked around if takes 66% of line. 365 # Stupidly long symbols that needs to be worked around if takes 66% of line.
(...skipping 11 matching lines...) Expand all
374 377
375 if line_len > extra_maxlen: 378 if line_len > extra_maxlen:
376 return False 379 return False
377 380
378 if 'url(' in line and file_extension == 'css': 381 if 'url(' in line and file_extension == 'css':
379 return True 382 return True
380 383
381 if '<include' in line and file_extension in ('css', 'html', 'js'): 384 if '<include' in line and file_extension in ('css', 'html', 'js'):
382 return True 385 return True
383 386
387 if 'pylint: disable=line-too-long' in line and file_extension == 'py':
388 return True
389
384 return input_api.re.match( 390 return input_api.re.match(
385 r'.*[A-Za-z][A-Za-z_0-9]{%d,}.*' % long_symbol, line) 391 r'.*[A-Za-z][A-Za-z_0-9]{%d,}.*' % long_symbol, line)
386 392
387 def format_error(filename, line_num, line): 393 def format_error(filename, line_num, line):
388 return '%s, line %s, %s chars' % (filename, line_num, len(line)) 394 return '%s, line %s, %s chars' % (filename, line_num, len(line))
389 395
390 errors = _FindNewViolationsOfRule(no_long_lines, input_api, 396 errors = _FindNewViolationsOfRule(no_long_lines, input_api,
391 source_file_filter, 397 source_file_filter,
392 error_formatter=format_error) 398 error_formatter=format_error)
393 if errors: 399 if errors:
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 for f in affected_files: 1155 for f in affected_files:
1150 cmd = ['gn', 'format', '--dry-run', f.AbsoluteLocalPath()] 1156 cmd = ['gn', 'format', '--dry-run', f.AbsoluteLocalPath()]
1151 rc = gn.main(cmd) 1157 rc = gn.main(cmd)
1152 if rc == 2: 1158 if rc == 2:
1153 warnings.append(output_api.PresubmitPromptWarning( 1159 warnings.append(output_api.PresubmitPromptWarning(
1154 '%s requires formatting. Please run `gn format --in-place %s`.' % ( 1160 '%s requires formatting. Please run `gn format --in-place %s`.' % (
1155 f.AbsoluteLocalPath(), f.LocalPath()))) 1161 f.AbsoluteLocalPath(), f.LocalPath())))
1156 # It's just a warning, so ignore other types of failures assuming they'll be 1162 # It's just a warning, so ignore other types of failures assuming they'll be
1157 # caught elsewhere. 1163 # caught elsewhere.
1158 return warnings 1164 return warnings
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698