Files
openide/java/java-tests/testSrc/com/intellij/codeInsight/daemon/ScanAllJdkSourceTest.java
T
2017-03-28 16:28:29 +02:00

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);
}
}
}
}
}