package org.jetbrains.plugins.cucumber.java.inspections; import com.intellij.codeInspection.ProblemsHolder; import com.intellij.codeInspection.ex.BaseLocalInspectionTool; import com.intellij.psi.*; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.cucumber.java.CucumberJavaBundle; import org.jetbrains.plugins.cucumber.java.CucumberJavaUtil; public class CucumberJavaStepDefClassIsPublicInspections extends BaseLocalInspectionTool { public boolean isEnabledByDefault() { return true; } @Nls @NotNull public String getDisplayName() { return CucumberJavaBundle.message("cucumber.java.inspections.step.def.class.is.public.title"); } @NotNull public String getShortName() { return "CucumberJavaStepDefClassIsPublic"; } @NotNull public PsiElementVisitor buildVisitor(@NotNull final ProblemsHolder holder, boolean isOnTheFly) { return new CucumberJavaStepDefClassIsPublicVisitor(holder); } static class CucumberJavaStepDefClassIsPublicVisitor extends JavaElementVisitor { final ProblemsHolder holder; CucumberJavaStepDefClassIsPublicVisitor(final ProblemsHolder holder) { this.holder = holder; } @Override public void visitClass(PsiClass aClass) { if (!CucumberJavaUtil.isStepDefinitionClass(aClass)) { return; } if (!aClass.hasModifierProperty(PsiModifier.PUBLIC)) { PsiElement elementToHighlight = aClass.getNameIdentifier(); if (elementToHighlight == null) { elementToHighlight = aClass; } holder.registerProblem(elementToHighlight, CucumberJavaBundle.message("cucumber.java.inspection.step.def.class.is.public.message")); } } } }