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

Side by Side Diff: third_party/WebKit/Tools/Scripts/webkitpy/style/checkers/python.py

Issue 2878873002: webkitpy: Rename WebKitFinder to PathFinder (Closed)
Patch Set: Created 3 years, 7 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
OLDNEW
1 # Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org) 1 # Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions 4 # modification, are permitted provided that the following conditions
5 # are met: 5 # are met:
6 # 1. Redistributions of source code must retain the above copyright 6 # 1. Redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer. 7 # notice, this list of conditions and the following disclaimer.
8 # 2. Redistributions in binary form must reproduce the above copyright 8 # 2. Redistributions in binary form must reproduce the above copyright
9 # notice, this list of conditions and the following disclaimer in the 9 # notice, this list of conditions and the following disclaimer in the
10 # documentation and/or other materials provided with the distribution. 10 # documentation and/or other materials provided with the distribution.
11 # 11 #
12 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND 12 # THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
13 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 13 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
14 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 14 # WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
15 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR 15 # DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
16 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 16 # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
17 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 17 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
18 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 18 # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
19 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 19 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
20 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 20 # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 21 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22 22
23 """Supports checking WebKit style in Python files.""" 23 """Supports checking WebKit style in Python files."""
24 24
25 import os 25 import os
26 import re 26 import re
27 import sys 27 import sys
28 28
29 29
30 from webkitpy.common.path_finder import PathFinder
30 from webkitpy.common.system.filesystem import FileSystem 31 from webkitpy.common.system.filesystem import FileSystem
31 from webkitpy.common.system.executive import Executive 32 from webkitpy.common.system.executive import Executive
32 from webkitpy.common.webkit_finder import WebKitFinder
33 from webkitpy.thirdparty import pep8 33 from webkitpy.thirdparty import pep8
34 34
35 35
36 class PythonChecker(object): 36 class PythonChecker(object):
37 """Processes text lines for checking style.""" 37 """Processes text lines for checking style."""
38 38
39 def __init__(self, file_path, handle_style_error): 39 def __init__(self, file_path, handle_style_error):
40 self._file_path = file_path 40 self._file_path = file_path
41 self._handle_style_error = handle_style_error 41 self._handle_style_error = handle_style_error
42 42
(...skipping 22 matching lines...) Expand all
65 pep8_checker.report_error = _pep8_handle_error 65 pep8_checker.report_error = _pep8_handle_error
66 pep8_checker.check_all() 66 pep8_checker.check_all()
67 67
68 def _check_pylint(self): 68 def _check_pylint(self):
69 output = self.run_pylint(self._file_path) 69 output = self.run_pylint(self._file_path)
70 errors = self._parse_pylint_output(output) 70 errors = self._parse_pylint_output(output)
71 for line_number, category, message in errors: 71 for line_number, category, message in errors:
72 self._handle_style_error(line_number, category, 5, message) 72 self._handle_style_error(line_number, category, 5, message)
73 73
74 def run_pylint(self, path): 74 def run_pylint(self, path):
75 wkf = WebKitFinder(FileSystem()) 75 finder = PathFinder(FileSystem())
76 executive = Executive() 76 executive = Executive()
77 env = os.environ.copy() 77 env = os.environ.copy()
78 env['PYTHONPATH'] = os.pathsep.join([ 78 env['PYTHONPATH'] = os.pathsep.join([
79 wkf.path_from_tools_scripts(), 79 finder.path_from_tools_scripts(),
80 wkf.path_from_blink_source('build', 'scripts'), 80 finder.path_from_blink_source('build', 'scripts'),
81 wkf.path_from_tools_scripts('webkitpy', 'thirdparty'), 81 finder.path_from_tools_scripts('webkitpy', 'thirdparty'),
82 wkf.path_from_blink_source('bindings', 'scripts'), 82 finder.path_from_blink_source('bindings', 'scripts'),
83 wkf.path_from_chromium_base('build', 'android'), 83 finder.path_from_chromium_base('build', 'android'),
84 wkf.path_from_chromium_base('third_party', 'catapult', 'devil'), 84 finder.path_from_chromium_base('third_party', 'catapult', 'devil'),
85 wkf.path_from_chromium_base('third_party', 'pymock'), 85 finder.path_from_chromium_base('third_party', 'pymock'),
86 ]) 86 ])
87 return executive.run_command([ 87 return executive.run_command([
88 sys.executable, 88 sys.executable,
89 wkf.path_from_depot_tools_base('pylint.py'), 89 finder.path_from_depot_tools_base('pylint.py'),
90 '--output-format=parseable', 90 '--output-format=parseable',
91 '--rcfile=' + wkf.path_from_tools_scripts('webkitpy', 'pylintrc'), 91 '--rcfile=' + finder.path_from_tools_scripts('webkitpy', 'pylintrc') ,
92 path, 92 path,
93 ], env=env, error_handler=executive.ignore_error) 93 ], env=env, error_handler=executive.ignore_error)
94 94
95 def _parse_pylint_output(self, output): 95 def _parse_pylint_output(self, output):
96 # We filter out these messages because they are bugs in pylint that prod uce false positives. 96 # We filter out these messages because they are bugs in pylint that prod uce false positives.
97 # FIXME: Does it make sense to combine these rules with the rules in sty le/checker.py somehow? 97 # FIXME: Does it make sense to combine these rules with the rules in sty le/checker.py somehow?
98 FALSE_POSITIVES = [ 98 FALSE_POSITIVES = [
99 # possibly http://www.logilab.org/ticket/98613 ? 99 # possibly http://www.logilab.org/ticket/98613 ?
100 "Instance of 'Popen' has no 'poll' member", 100 "Instance of 'Popen' has no 'poll' member",
101 "Instance of 'Popen' has no 'returncode' member", 101 "Instance of 'Popen' has no 'returncode' member",
(...skipping 15 matching lines...) Expand all
117 117
118 line_number = int(match_obj.group(2)) 118 line_number = int(match_obj.group(2))
119 category_and_method = match_obj.group(3).split(', ') 119 category_and_method = match_obj.group(3).split(', ')
120 category = 'pylint/' + (category_and_method[0]) 120 category = 'pylint/' + (category_and_method[0])
121 if len(category_and_method) > 1: 121 if len(category_and_method) > 1:
122 message = '[%s] %s' % (category_and_method[1], match_obj.group(4 )) 122 message = '[%s] %s' % (category_and_method[1], match_obj.group(4 ))
123 else: 123 else:
124 message = match_obj.group(4) 124 message = match_obj.group(4)
125 errors.append((line_number, category, message)) 125 errors.append((line_number, category, message))
126 return errors 126 return errors
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698