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

Unified Diff: third_party/pylint/checkers/design_analysis.py

Issue 753543006: pylint: upgrade to 1.4.0 (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 6 years 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/pylint/checkers/classes.py ('k') | third_party/pylint/checkers/exceptions.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/pylint/checkers/design_analysis.py
diff --git a/third_party/pylint/checkers/design_analysis.py b/third_party/pylint/checkers/design_analysis.py
index 0725ccf0c091999511518840f1c4badf6efc19a3..0a7a307cfb2987be43148b8ad658cfef790003a9 100644
--- a/third_party/pylint/checkers/design_analysis.py
+++ b/third_party/pylint/checkers/design_analysis.py
@@ -15,14 +15,15 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
"""check for signs of poor design"""
+import re
+from collections import defaultdict
+
from astroid import Function, If, InferenceError
from pylint.interfaces import IAstroidChecker
from pylint.checkers import BaseChecker
from pylint.checkers.utils import check_messages
-import re
-
# regexp for ignored argument name
IGNORED_ARGUMENT_NAMES = re.compile('_.*')
@@ -174,7 +175,7 @@ class MisdesignChecker(BaseChecker):
"""initialize visit variables"""
self.stats = self.linter.add_stats()
self._returns = []
- self._branches = []
+ self._branches = defaultdict(int)
self._used_abstracts = {}
self._used_ifaces = {}
self._abstracts = []
@@ -200,7 +201,6 @@ class MisdesignChecker(BaseChecker):
def visit_class(self, node):
"""check size of inheritance hierarchy and number of instance attributes
"""
- self._inc_branch()
# Is the total inheritance hierarchy is 7 or less?
nb_parents = len(list(node.ancestors()))
if nb_parents > self.config.max_parents:
@@ -241,12 +241,9 @@ class MisdesignChecker(BaseChecker):
def leave_class(self, node):
"""check number of public methods"""
nb_public_methods = 0
- special_methods = set()
- for method in node.methods():
+ for method in node.mymethods():
if not method.name.startswith('_'):
nb_public_methods += 1
- if method.name.startswith("__"):
- special_methods.add(method.name)
# Does the class contain less than 20 public methods ?
if nb_public_methods > self.config.max_public_methods:
self.add_message('too-many-public-methods', node=node,
@@ -257,20 +254,19 @@ class MisdesignChecker(BaseChecker):
return
# Does the class contain more than 5 public methods ?
if nb_public_methods < self.config.min_public_methods:
- self.add_message('R0903', node=node,
+ self.add_message('too-few-public-methods', node=node,
args=(nb_public_methods,
self.config.min_public_methods))
@check_messages('too-many-return-statements', 'too-many-branches',
- 'too-many-arguments', 'too-many-locals', 'too-many-statements')
+ 'too-many-arguments', 'too-many-locals',
+ 'too-many-statements')
def visit_function(self, node):
"""check function name, docstring, arguments, redefinition,
variable names, max locals
"""
- self._inc_branch()
# init branch and returns counters
self._returns.append(0)
- self._branches.append(0)
# check number of arguments
args = node.args.args
if args is not None:
@@ -291,7 +287,9 @@ class MisdesignChecker(BaseChecker):
# init statements counter
self._stmts = 1
- @check_messages('too-many-return-statements', 'too-many-branches', 'too-many-arguments', 'too-many-locals', 'too-many-statements')
+ @check_messages('too-many-return-statements', 'too-many-branches',
+ 'too-many-arguments', 'too-many-locals',
+ 'too-many-statements')
def leave_function(self, node):
"""most of the work is done here on close:
checks for max returns, branch, return in __init__
@@ -300,7 +298,7 @@ class MisdesignChecker(BaseChecker):
if returns > self.config.max_returns:
self.add_message('too-many-return-statements', node=node,
args=(returns, self.config.max_returns))
- branches = self._branches.pop()
+ branches = self._branches[node]
if branches > self.config.max_branches:
self.add_message('too-many-branches', node=node,
args=(branches, self.config.max_branches))
@@ -327,12 +325,12 @@ class MisdesignChecker(BaseChecker):
branches = len(node.handlers)
if node.orelse:
branches += 1
- self._inc_branch(branches)
+ self._inc_branch(node, branches)
self._stmts += branches
- def visit_tryfinally(self, _):
+ def visit_tryfinally(self, node):
"""increments the branches counter"""
- self._inc_branch(2)
+ self._inc_branch(node, 2)
self._stmts += 2
def visit_if(self, node):
@@ -342,7 +340,7 @@ class MisdesignChecker(BaseChecker):
if node.orelse and (len(node.orelse) > 1 or
not isinstance(node.orelse[0], If)):
branches += 1
- self._inc_branch(branches)
+ self._inc_branch(node, branches)
self._stmts += branches
def visit_while(self, node):
@@ -350,15 +348,13 @@ class MisdesignChecker(BaseChecker):
branches = 1
if node.orelse:
branches += 1
- self._inc_branch(branches)
+ self._inc_branch(node, branches)
visit_for = visit_while
- def _inc_branch(self, branchesnum=1):
+ def _inc_branch(self, node, branchesnum=1):
"""increments the branches counter"""
- branches = self._branches
- for i in xrange(len(branches)):
- branches[i] += branchesnum
+ self._branches[node.scope()] += branchesnum
# FIXME: make a nice report...
« no previous file with comments | « third_party/pylint/checkers/classes.py ('k') | third_party/pylint/checkers/exceptions.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698