diff --git a/plugins/devkit/README.md b/plugins/devkit/README.md index 8cea1dbfacc9..b508c1cc7de1 100644 --- a/plugins/devkit/README.md +++ b/plugins/devkit/README.md @@ -3,6 +3,8 @@ ## Inspections See `org.jetbrains.idea.devkit.inspections.DevKitInspectionUtil` for common utility methods. +By default, files located in _test sources_ are not checked, +use `DevKitInspectionUtil.isAllowedIncludingTestSources()` to include them. Consider marking inspections with _safe-only_ fixes ready for _Code | Code Cleanup..._ (`com.intellij.codeInspection.CleanupLocalInspectionTool`). diff --git a/plugins/devkit/devkit-core/src/inspections/DevKitInspectionUtil.java b/plugins/devkit/devkit-core/src/inspections/DevKitInspectionUtil.java index 42a41460f204..703910ebdb35 100644 --- a/plugins/devkit/devkit-core/src/inspections/DevKitInspectionUtil.java +++ b/plugins/devkit/devkit-core/src/inspections/DevKitInspectionUtil.java @@ -19,23 +19,30 @@ import java.util.function.Predicate; public final class DevKitInspectionUtil { static boolean isAllowedInPluginsOnly(@NotNull PsiFile file) { - return isAllowed(file, DevKitInspectionUtil::isPluginFile); + return isAllowed(file, false, DevKitInspectionUtil::isPluginFile); } + /** + * @see #isAllowedIncludingTestSources(PsiFile) + */ public static boolean isAllowed(@NotNull PsiFile file) { - return isAllowed(file, __ -> true); + return isAllowed(file, false, __ -> true); + } + + public static boolean isAllowedIncludingTestSources(@NotNull PsiFile file) { + return isAllowed(file, true, ___ -> true); } public static boolean isClassAvailable(@NotNull ProblemsHolder holder, @NonNls String classFqn) { return JavaPsiFacade.getInstance(holder.getProject()).findClass(classFqn, holder.getFile().getResolveScope()) != null; } - private static boolean isAllowed(@NotNull PsiFile file, @NotNull Predicate predicate) { + private static boolean isAllowed(@NotNull PsiFile file, boolean allowedInTestSources, @NotNull Predicate predicate) { if (ApplicationManager.getApplication().isUnitTestMode()) return true; // always run in tests VirtualFile vFile = file.getVirtualFile(); if (vFile == null) return false; - if (TestSourcesFilter.isTestSources(vFile, file.getProject())) return false; + if (!allowedInTestSources && TestSourcesFilter.isTestSources(vFile, file.getProject())) return false; if (IntelliJProjectUtil.isIntelliJPlatformProject(file.getProject())) { return predicate.test(file);