Search in sources :

Example 1 with PyPep8Inspection

use of com.jetbrains.python.inspections.PyPep8Inspection in project intellij-community by JetBrains.

the class Pep8ExternalAnnotator method collectInformation.

@Nullable
@Override
public State collectInformation(@NotNull PsiFile file) {
    VirtualFile vFile = file.getVirtualFile();
    if (vFile == null || vFile.getFileType() != PythonFileType.INSTANCE) {
        return null;
    }
    Sdk sdk = PythonSdkType.findLocalCPython(ModuleUtilCore.findModuleForPsiElement(file));
    if (sdk == null) {
        if (!myReportedMissingInterpreter) {
            myReportedMissingInterpreter = true;
            reportMissingInterpreter();
        }
        return null;
    }
    final String homePath = sdk.getHomePath();
    if (homePath == null) {
        if (!myReportedMissingInterpreter) {
            myReportedMissingInterpreter = true;
            LOG.info("Could not find home path for interpreter " + homePath);
        }
        return null;
    }
    final InspectionProfile profile = InspectionProjectProfileManager.getInstance(file.getProject()).getCurrentProfile();
    final HighlightDisplayKey key = HighlightDisplayKey.find(PyPep8Inspection.INSPECTION_SHORT_NAME);
    if (!profile.isToolEnabled(key, file)) {
        return null;
    }
    if (file instanceof PyFileImpl && !((PyFileImpl) file).isAcceptedFor(PyPep8Inspection.class)) {
        return null;
    }
    final PyPep8Inspection inspection = (PyPep8Inspection) profile.getUnwrappedTool(PyPep8Inspection.KEY.toString(), file);
    final CodeStyleSettings commonSettings = CodeStyleSettingsManager.getInstance(file.getProject()).getCurrentSettings();
    final PyCodeStyleSettings customSettings = commonSettings.getCustomSettings(PyCodeStyleSettings.class);
    final List<String> ignoredErrors = Lists.newArrayList(inspection.ignoredErrors);
    if (!customSettings.SPACE_AFTER_NUMBER_SIGN) {
        // Block comment should start with a space
        ignoredErrors.add("E262");
        // Inline comment should start with a space
        ignoredErrors.add("E265");
    }
    if (!customSettings.SPACE_BEFORE_NUMBER_SIGN) {
        // At least two spaces before inline comment
        ignoredErrors.add("E261");
    }
    final int margin = commonSettings.getRightMargin(file.getLanguage());
    return new State(homePath, file.getText(), profile.getErrorLevel(key, file), ignoredErrors, margin, customSettings.HANG_CLOSING_BRACKETS);
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) CodeStyleSettings(com.intellij.psi.codeStyle.CodeStyleSettings) CommonCodeStyleSettings(com.intellij.psi.codeStyle.CommonCodeStyleSettings) PyCodeStyleSettings(com.jetbrains.python.formatter.PyCodeStyleSettings) InspectionProfile(com.intellij.codeInspection.InspectionProfile) HighlightDisplayKey(com.intellij.codeInsight.daemon.HighlightDisplayKey) PyCodeStyleSettings(com.jetbrains.python.formatter.PyCodeStyleSettings) Sdk(com.intellij.openapi.projectRoots.Sdk) PyFileImpl(com.jetbrains.python.psi.impl.PyFileImpl) PyPep8Inspection(com.jetbrains.python.inspections.PyPep8Inspection) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

HighlightDisplayKey (com.intellij.codeInsight.daemon.HighlightDisplayKey)1 InspectionProfile (com.intellij.codeInspection.InspectionProfile)1 Sdk (com.intellij.openapi.projectRoots.Sdk)1 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1 CodeStyleSettings (com.intellij.psi.codeStyle.CodeStyleSettings)1 CommonCodeStyleSettings (com.intellij.psi.codeStyle.CommonCodeStyleSettings)1 PyCodeStyleSettings (com.jetbrains.python.formatter.PyCodeStyleSettings)1 PyPep8Inspection (com.jetbrains.python.inspections.PyPep8Inspection)1 PyFileImpl (com.jetbrains.python.psi.impl.PyFileImpl)1 Nullable (org.jetbrains.annotations.Nullable)1