mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-08-18 16:17:00 +07:00
79 lines
3.2 KiB
Java
79 lines
3.2 KiB
Java
package com.intellij.codeInsight.daemon;
|
|
|
|
import com.intellij.codeHighlighting.HighlightDisplayLevel;
|
|
import com.intellij.codeInspection.ex.InspectionProfileImpl;
|
|
import com.intellij.codeInspection.ex.InspectionProfileModifiableModel;
|
|
import com.intellij.codeInspection.javaDoc.JavaDocLocalInspectionBase;
|
|
import com.intellij.openapi.projectRoots.Sdk;
|
|
import com.intellij.openapi.projectRoots.SdkModificator;
|
|
import com.intellij.openapi.projectRoots.impl.ProjectRootUtil;
|
|
import com.intellij.openapi.roots.ModuleRootManager;
|
|
import com.intellij.openapi.roots.OrderRootType;
|
|
import com.intellij.openapi.vfs.JarFileSystem;
|
|
import com.intellij.openapi.vfs.VirtualFile;
|
|
import com.intellij.profile.codeInspection.ProjectInspectionProfileManager;
|
|
import com.intellij.psi.PsiDirectory;
|
|
import com.intellij.psi.PsiElement;
|
|
import com.intellij.psi.PsiFile;
|
|
import com.intellij.testFramework.InspectionsKt;
|
|
import com.intellij.util.Consumer;
|
|
|
|
public class ScanAllJdkSourceTest extends DaemonAnalyzerTestCase {
|
|
public void testAll() throws Exception {
|
|
if (System.getProperty("JDK_HIGHLIGHTING_TEST") == null) {
|
|
return;
|
|
}
|
|
|
|
Sdk jdk = ModuleRootManager.getInstance(myModule).getSdk();
|
|
String toolsPath = jdk.getHomeDirectory().getPath() + "/lib/tools.jar";
|
|
VirtualFile toolsJar = JarFileSystem.getInstance().findFileByPath(toolsPath + JarFileSystem.JAR_SEPARATOR);
|
|
assertNotNull(toolsJar);
|
|
SdkModificator sdkModificator = jdk.getSdkModificator();
|
|
sdkModificator.addRoot(toolsJar, OrderRootType.CLASSES);
|
|
sdkModificator.commitChanges();
|
|
|
|
ProjectInspectionProfileManager profileManager = ProjectInspectionProfileManager.getInstance(myProject);
|
|
InspectionProfileImpl inspectionProfile = profileManager.getCurrentProfile();
|
|
InspectionsKt.runInInitMode(() -> {
|
|
inspectionProfile.initInspectionTools(myProject);
|
|
return null;
|
|
});
|
|
|
|
Consumer<InspectionProfileModifiableModel> consumer = it -> it.setErrorLevel(HighlightDisplayKey.find(JavaDocLocalInspectionBase.SHORT_NAME), HighlightDisplayLevel.WARNING, getProject());
|
|
inspectionProfile.modifyProfile(consumer);
|
|
try {
|
|
for (PsiDirectory root : ProjectRootUtil.getSourceRootDirectories(myProject)) {
|
|
doScan(root);
|
|
}
|
|
}
|
|
finally {
|
|
inspectionProfile.modifyProfile(consumer);
|
|
profileManager.deleteProfile(inspectionProfile.getName());
|
|
}
|
|
}
|
|
|
|
static final int MAX_FILES = Integer.parseInt(
|
|
System.getProperty("JDK_HIGHLIGHTING_MAX_FILES") == null ? "0" : System.getProperty("JDK_HIGHLIGHTING_MAX_FILES"));
|
|
static int nFiles = 0;
|
|
static final String FIRST_FILE = System.getProperty("JDK_HIGHLIGHTING_FIRST_FILE");
|
|
static boolean doTest = FIRST_FILE == null;
|
|
|
|
private void doScan(PsiDirectory dir) throws Exception {
|
|
for (PsiElement child : dir.getChildren()) {
|
|
if (child instanceof PsiDirectory) {
|
|
doScan((PsiDirectory)child);
|
|
}
|
|
else {
|
|
if (++nFiles == MAX_FILES) return;
|
|
PsiFile file = (PsiFile)child;
|
|
final String url = file.getVirtualFile().getPresentableUrl();
|
|
if (url.equals(FIRST_FILE)) doTest = true;
|
|
if (doTest) {
|
|
System.out.println("analyzing file:" + url);
|
|
doTest(file.getVirtualFile(), false, false);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|