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

Side by Side Diff: PRESUBMIT.py

Issue 2651553006: Dependency check for .proto files is added to PRESUBMIT (Closed)
Patch Set: nits Created 3 years, 11 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 """Top-level presubmit script for Chromium. 5 """Top-level presubmit script for Chromium.
6 6
7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts 7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
8 for more details about the presubmit API built into depot_tools. 8 for more details about the presubmit API built into depot_tools.
9 """ 9 """
10 10
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 problems.append(' %s:%d' % (f.LocalPath(), line_num)) 670 problems.append(' %s:%d' % (f.LocalPath(), line_num))
671 671
672 if not problems: 672 if not problems:
673 return [] 673 return []
674 return [output_api.PresubmitPromptWarning( 674 return [output_api.PresubmitPromptWarning(
675 'Please consider avoiding the "? true : false" pattern if possible.\n' + 675 'Please consider avoiding the "? true : false" pattern if possible.\n' +
676 '\n'.join(problems))] 676 '\n'.join(problems))]
677 677
678 678
679 def _CheckUnwantedDependencies(input_api, output_api): 679 def _CheckUnwantedDependencies(input_api, output_api):
680 """Runs checkdeps on #include statements added in this 680 """Runs checkdeps on #include and import statements added in this
681 change. Breaking - rules is an error, breaking ! rules is a 681 change. Breaking - rules is an error, breaking ! rules is a
682 warning. 682 warning.
683 """ 683 """
684 import sys 684 import sys
685 # We need to wait until we have an input_api object and use this 685 # We need to wait until we have an input_api object and use this
686 # roundabout construct to import checkdeps because this file is 686 # roundabout construct to import checkdeps because this file is
687 # eval-ed and thus doesn't have __file__. 687 # eval-ed and thus doesn't have __file__.
688 original_sys_path = sys.path 688 original_sys_path = sys.path
689 try: 689 try:
690 sys.path = sys.path + [input_api.os_path.join( 690 sys.path = sys.path + [input_api.os_path.join(
691 input_api.PresubmitLocalPath(), 'buildtools', 'checkdeps')] 691 input_api.PresubmitLocalPath(), 'buildtools', 'checkdeps')]
692 import checkdeps 692 import checkdeps
693 from cpp_checker import CppChecker 693 from cpp_checker import CppChecker
694 from proto_checker import ProtoChecker
694 from rules import Rule 695 from rules import Rule
695 finally: 696 finally:
696 # Restore sys.path to what it was before. 697 # Restore sys.path to what it was before.
697 sys.path = original_sys_path 698 sys.path = original_sys_path
698 699
699 added_includes = [] 700 added_includes = []
701 added_imports = []
700 for f in input_api.AffectedFiles(): 702 for f in input_api.AffectedFiles():
701 if not CppChecker.IsCppFile(f.LocalPath()): 703 if CppChecker.IsCppFile(f.LocalPath()):
702 continue 704 changed_lines = [line for line_num, line in f.ChangedContents()]
703 705 added_includes.append([f.LocalPath(), changed_lines])
704 changed_lines = [line for line_num, line in f.ChangedContents()] 706 elif ProtoChecker.IsProtoFile(f.LocalPath()):
705 added_includes.append([f.LocalPath(), changed_lines]) 707 changed_lines = [line for line_num, line in f.ChangedContents()]
708 added_imports.append([f.LocalPath(), changed_lines])
706 709
707 deps_checker = checkdeps.DepsChecker(input_api.PresubmitLocalPath()) 710 deps_checker = checkdeps.DepsChecker(input_api.PresubmitLocalPath())
708 711
709 error_descriptions = [] 712 error_descriptions = []
710 warning_descriptions = [] 713 warning_descriptions = []
714 error_subjects = set()
715 warning_subjects = set()
711 for path, rule_type, rule_description in deps_checker.CheckAddedCppIncludes( 716 for path, rule_type, rule_description in deps_checker.CheckAddedCppIncludes(
712 added_includes): 717 added_includes):
713 description_with_path = '%s\n %s' % (path, rule_description) 718 description_with_path = '%s\n %s' % (path, rule_description)
714 if rule_type == Rule.DISALLOW: 719 if rule_type == Rule.DISALLOW:
715 error_descriptions.append(description_with_path) 720 error_descriptions.append(description_with_path)
721 error_subjects.add("#includes")
716 else: 722 else:
717 warning_descriptions.append(description_with_path) 723 warning_descriptions.append(description_with_path)
724 warning_subjects.add("#includes")
725
726 for path, rule_type, rule_description in deps_checker.CheckAddedProtoImports(
727 added_imports):
728 description_with_path = '%s\n %s' % (path, rule_description)
729 if rule_type == Rule.DISALLOW:
730 error_descriptions.append(description_with_path)
731 error_subjects.add("imports")
732 else:
733 warning_descriptions.append(description_with_path)
734 warning_subjects.add("imports")
718 735
719 results = [] 736 results = []
720 if error_descriptions: 737 if error_descriptions:
721 results.append(output_api.PresubmitError( 738 results.append(output_api.PresubmitError(
722 'You added one or more #includes that violate checkdeps rules.', 739 'You added one or more %s that violate checkdeps rules.'
740 % " and ".join(error_subjects),
723 error_descriptions)) 741 error_descriptions))
724 if warning_descriptions: 742 if warning_descriptions:
725 results.append(output_api.PresubmitPromptOrNotify( 743 results.append(output_api.PresubmitPromptOrNotify(
726 'You added one or more #includes of files that are temporarily\n' 744 'You added one or more %s of files that are temporarily\n'
727 'allowed but being removed. Can you avoid introducing the\n' 745 'allowed but being removed. Can you avoid introducing the\n'
728 '#include? See relevant DEPS file(s) for details and contacts.', 746 '%s? See relevant DEPS file(s) for details and contacts.' %
747 (" and ".join(warning_subjects), "/".join(warning_subjects)),
729 warning_descriptions)) 748 warning_descriptions))
730 return results 749 return results
731 750
732 751
733 def _CheckFilePermissions(input_api, output_api): 752 def _CheckFilePermissions(input_api, output_api):
734 """Check that all files have their permissions properly set.""" 753 """Check that all files have their permissions properly set."""
735 if input_api.platform == 'win32': 754 if input_api.platform == 'win32':
736 return [] 755 return []
737 checkperms_tool = input_api.os_path.join( 756 checkperms_tool = input_api.os_path.join(
738 input_api.PresubmitLocalPath(), 757 input_api.PresubmitLocalPath(),
(...skipping 1628 matching lines...) Expand 10 before | Expand all | Expand 10 after
2367 results.extend(input_api.canned_checks.CheckTreeIsOpen( 2386 results.extend(input_api.canned_checks.CheckTreeIsOpen(
2368 input_api, 2387 input_api,
2369 output_api, 2388 output_api,
2370 json_url='http://chromium-status.appspot.com/current?format=json')) 2389 json_url='http://chromium-status.appspot.com/current?format=json'))
2371 2390
2372 results.extend(input_api.canned_checks.CheckChangeHasBugField( 2391 results.extend(input_api.canned_checks.CheckChangeHasBugField(
2373 input_api, output_api)) 2392 input_api, output_api))
2374 results.extend(input_api.canned_checks.CheckChangeHasDescription( 2393 results.extend(input_api.canned_checks.CheckChangeHasDescription(
2375 input_api, output_api)) 2394 input_api, output_api))
2376 return results 2395 return results
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