mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
fixed PY-2977 "Code Compatibility" false positives. updated versions.xml for Compatibility Visitor.
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
__author__ = 'catherine'
|
||||
|
||||
import urllib2
|
||||
import datetime
|
||||
from BeautifulSoup import BeautifulSoup
|
||||
from xml.dom import minidom
|
||||
|
||||
exclude = ['StringIO', 'cStringIO']
|
||||
|
||||
def get_address(version):
|
||||
return "http://docs.python.org/release/" + str(version) + "/modindex.html"
|
||||
|
||||
@@ -68,6 +71,8 @@ def get_functions_from_page(link, module):
|
||||
tt = None
|
||||
if tt is not None:
|
||||
func = str(tt.text)
|
||||
if func in exclude or (module[0] + "." + func) in exclude:
|
||||
continue
|
||||
if func.startswith(module[0] + "."):
|
||||
functions.add(func)
|
||||
else:
|
||||
@@ -114,13 +119,17 @@ all_versions = (2.4, 2.5, 2.6, 2.7, 3.0, 3.1)
|
||||
all_functions = set()
|
||||
root_elem = doc.createElement("root")
|
||||
|
||||
print ("Start searching for all functions")
|
||||
for version in all_versions:
|
||||
print ("version " + str(version) + " started at " + str(datetime.datetime.now()))
|
||||
supported = get_supported_functions(version)
|
||||
all_functions = all_functions.union(supported)
|
||||
builtins = get_builtins(version)
|
||||
all_functions = all_functions.union(builtins)
|
||||
|
||||
print ("Start searching unsupported functions")
|
||||
for version in all_versions:
|
||||
print ("version " + str(version) + " started at " + str(datetime.datetime.now()))
|
||||
version_elem = doc.createElement("python")
|
||||
version_elem.setAttribute('version', str(version))
|
||||
supported = get_supported_functions(version)
|
||||
@@ -143,8 +152,9 @@ for version in all_versions:
|
||||
version_elem.appendChild(elem)
|
||||
|
||||
root_elem.appendChild(version_elem)
|
||||
doc.appendChild(root_elem)
|
||||
|
||||
doc.appendChild(root_elem)
|
||||
print ("Versions processing finished at " + str(datetime.datetime.now()))
|
||||
file_handler = open("versions.xml", 'w')
|
||||
doc.writexml(file_handler)
|
||||
file_handler.close()
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -116,18 +116,9 @@ public abstract class CompatibilityVisitor extends PyAnnotator {
|
||||
for (PyImportElement importElement : importElements) {
|
||||
final PyQualifiedName qName = importElement.getImportedQName();
|
||||
if (qName != null) {
|
||||
if (!languageLevel.isPy3K()) {
|
||||
if (qName.matches("builtins")) {
|
||||
len = appendLanguageLevel(message, len, languageLevel);
|
||||
moduleName = "builtins";
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (qName.matches("__builtin__")) {
|
||||
len = appendLanguageLevel(message, len, languageLevel);
|
||||
moduleName = "__builtin__";
|
||||
}
|
||||
}
|
||||
moduleName = qName.toString();
|
||||
if (UnsupportedFeaturesUtil.MODULES.get(languageLevel).contains(moduleName))
|
||||
len = appendLanguageLevel(message, len, languageLevel);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -449,33 +440,17 @@ public abstract class CompatibilityVisitor extends PyAnnotator {
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (!name.equals("print") && UnsupportedFeaturesUtil.BUILTINS.get(languageLevel).contains(name)) {
|
||||
len = appendLanguageLevel(message, len, languageLevel);
|
||||
}
|
||||
}
|
||||
//else {
|
||||
// if (!name.equals("print") && UnsupportedFeaturesUtil.BUILTINS.get(languageLevel).contains(name)) {
|
||||
// len = appendLanguageLevel(message, len, languageLevel);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
commonRegisterProblem(message, " not have method " + node.getCallee().getText(),
|
||||
len, node, null, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitPyImportElement(PyImportElement node) {
|
||||
super.visitPyImportElement(node);
|
||||
int len = 0;
|
||||
StringBuilder message = new StringBuilder(myCommonMessage);
|
||||
for (int i = 0; i != myVersionsToProcess.size(); ++i) {
|
||||
LanguageLevel languageLevel = myVersionsToProcess.get(i);
|
||||
if (UnsupportedFeaturesUtil.MODULES.get(languageLevel).contains(node.getText()) &&
|
||||
!node.getText().equals("__builtin__") && !node.getText().equals("builtins")) {
|
||||
len = appendLanguageLevel(message, len, languageLevel);
|
||||
}
|
||||
}
|
||||
commonRegisterProblem(message, " not have module " + node.getText(), len, node, null, false);
|
||||
}
|
||||
|
||||
|
||||
protected abstract void registerProblem(PsiElement node, String s, LocalQuickFix localQuickFix, boolean asError);
|
||||
|
||||
protected void registerProblem(PsiElement node, String s, LocalQuickFix localQuickFix) {
|
||||
|
||||
Reference in New Issue
Block a user