From 299424107ffba6e1b3e6161e6f946be574ecc57a Mon Sep 17 00:00:00 2001 From: Andrey Vlasovskikh Date: Fri, 28 Feb 2014 14:12:03 +0400 Subject: [PATCH] Don't crawl down the tree for performance reasons, use cached globals --- .../inspections/PyPep8NamingInspection.java | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java index f3fddbac3a8b..1b3dfc63b61f 100644 --- a/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java +++ b/python/src/com/jetbrains/python/inspections/PyPep8NamingInspection.java @@ -24,7 +24,8 @@ import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.QualifiedName; import com.intellij.util.containers.hash.HashMap; -import com.intellij.util.containers.hash.HashSet; +import com.jetbrains.python.codeInsight.controlflow.ControlFlowCache; +import com.jetbrains.python.codeInsight.dataflow.scope.Scope; import com.jetbrains.python.psi.*; import com.jetbrains.python.psi.search.PySuperMethodsSearch; import com.jetbrains.python.psi.types.PyModuleType; @@ -34,9 +35,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import javax.swing.*; -import java.util.Collection; import java.util.Map; -import java.util.Set; import java.util.regex.Pattern; /** @@ -71,17 +70,10 @@ public class PyPep8NamingInspection extends PyInspection { public void visitPyAssignmentStatement(PyAssignmentStatement node) { final PyFunction function = PsiTreeUtil.getParentOfType(node, PyFunction.class, true, PyClass.class); if (function == null) return; - final Collection globalStatements = PsiTreeUtil.findChildrenOfType(function, PyGlobalStatement.class); - final Set globals = new HashSet(); - for (PyGlobalStatement statement : globalStatements) { - final PyTargetExpression[] statementGlobals = statement.getGlobals(); - for (PyTargetExpression global : statementGlobals) { - globals.add(global.getName()); - } - } + final Scope scope = ControlFlowCache.getScope(function); for (PyExpression expression : node.getTargets()) { final String name = expression.getName(); - if (name == null || globals.contains(name)) continue; + if (name == null || scope.isGlobal(name)) continue; if (expression instanceof PyTargetExpression) { final PyExpression qualifier = ((PyTargetExpression)expression).getQualifier(); if (qualifier != null) {