Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package com.intellij.java.coverage;

import com.intellij.java.language.psi.PsiClass;
import consulo.annotation.access.RequiredReadAction;
import consulo.annotation.component.ExtensionImpl;
import consulo.execution.coverage.CoverageAnnotator;
import consulo.execution.coverage.CoverageDataManager;
import consulo.execution.coverage.CoverageSuitesBundle;
import consulo.execution.coverage.view.AbstractCoverageProjectViewNodeDecorator;
import consulo.language.psi.PsiElement;
import consulo.language.psi.PsiUtilCore;
import consulo.language.psi.SmartPsiElementPointer;
import consulo.language.psi.scope.GlobalSearchScope;
import consulo.project.Project;
import consulo.project.ui.view.tree.PackageElement;
import consulo.project.ui.view.tree.ProjectViewNode;
Expand All @@ -23,82 +22,82 @@
*/
@ExtensionImpl
public class CoverageProjectViewClassNodeDecorator extends AbstractCoverageProjectViewNodeDecorator {
@Inject
public CoverageProjectViewClassNodeDecorator(final CoverageDataManager coverageDataManager) {
super(coverageDataManager);
}
@Inject
public CoverageProjectViewClassNodeDecorator(CoverageDataManager coverageDataManager) {
super(coverageDataManager);
}

// @Override
// public void decorate(PackageDependenciesNode node, ColoredTreeCellRenderer cellRenderer) {
// final PsiElement element = node.getPsiElement();
// if (element == null || !element.isValid()) {
// return;
// }
// @Override
// public void decorate(PackageDependenciesNode node, ColoredTreeCellRenderer cellRenderer) {
// PsiElement element = node.getPsiElement();
// if (element == null || !element.isValid()) {
// return;
// }
//
// final CoverageDataManager dataManager = getCoverageDataManager();
// final CoverageSuitesBundle currentSuite = dataManager.getCurrentSuitesBundle();
// final Project project = element.getProject();
// CoverageDataManager dataManager = getCoverageDataManager();
// CoverageSuitesBundle currentSuite = dataManager.getCurrentSuitesBundle();
// Project project = element.getProject();
//
// final JavaCoverageAnnotator javaCovAnnotator = getCovAnnotator(currentSuite, project);
// // This decorator is applicable only to JavaCoverageAnnotator
// if (javaCovAnnotator == null) {
// return;
// }
// JavaCoverageAnnotator javaCovAnnotator = getCovAnnotator(currentSuite, project);
// // This decorator is applicable only to JavaCoverageAnnotator
// if (javaCovAnnotator == null) {
// return;
// }
//
// if (element instanceof PsiClass) {
// final String qName = ((PsiClass) element).getQualifiedName();
// if (qName != null) {
// appendCoverageInfo(cellRenderer, javaCovAnnotator.getClassCoverageInformationString(qName, dataManager));
// }
// if (element instanceof PsiClass psiClass) {
// String qName = psiClass.getQualifiedName();
// if (qName != null) {
// appendCoverageInfo(cellRenderer, javaCovAnnotator.getClassCoverageInformationString(qName, dataManager));
// }
// }
// }
// }

@Override
public void decorate(ProjectViewNode node, PresentationData data) {
final CoverageDataManager coverageDataManager = getCoverageDataManager();
final CoverageSuitesBundle currentSuite = coverageDataManager.getCurrentSuitesBundle();
@Override
@RequiredReadAction
public void decorate(ProjectViewNode node, PresentationData data) {
CoverageDataManager coverageDataManager = getCoverageDataManager();
CoverageSuitesBundle currentSuite = coverageDataManager.getCurrentSuitesBundle();

final Project project = node.getProject();
final JavaCoverageAnnotator javaCovAnnotator = getCovAnnotator(currentSuite, project);
// This decorator is applicable only to JavaCoverageAnnotator
if (javaCovAnnotator == null) {
return;
}
Project project = node.getProject();
JavaCoverageAnnotator javaCovAnnotator = getCovAnnotator(currentSuite, project);
// This decorator is applicable only to JavaCoverageAnnotator
if (javaCovAnnotator == null) {
return;
}

final Object value = node.getValue();
PsiElement element = null;
if (value instanceof PsiElement) {
element = (PsiElement) value;
} else if (value instanceof SmartPsiElementPointer) {
element = ((SmartPsiElementPointer) value).getElement();
} else if (value instanceof PackageElement) {
PackageElement packageElement = (PackageElement) value;
final String coverageString = javaCovAnnotator.getPackageCoverageInformationString(packageElement.getPackage(),
packageElement.getModule(),
coverageDataManager);
data.setLocationString(coverageString);
}
Object value = node.getValue();
PsiElement element = null;
if (value instanceof PsiElement psiElement) {
element = psiElement;
}
else if (value instanceof SmartPsiElementPointer smartPsiElementPointer) {
element = smartPsiElementPointer.getElement();
}
else if (value instanceof PackageElement packageElement) {
String coverageString = javaCovAnnotator.getPackageCoverageInformationString(
packageElement.getPackage(),
packageElement.getModule(),
coverageDataManager
);
data.setLocationString(coverageString);
}

if (element instanceof PsiClass) {
final GlobalSearchScope searchScope = currentSuite.getSearchScope(project);
final VirtualFile vFile = PsiUtilCore.getVirtualFile(element);
if (vFile != null && searchScope.contains(vFile)) {
final String qName = ((PsiClass) element).getQualifiedName();
if (qName != null) {
data.setLocationString(javaCovAnnotator.getClassCoverageInformationString(qName, coverageDataManager));
if (element instanceof PsiClass psiClass) {
VirtualFile vFile = PsiUtilCore.getVirtualFile(element);
if (vFile != null && currentSuite.getSearchScope(project).contains(vFile)) {
String qName = psiClass.getQualifiedName();
if (qName != null) {
data.setLocationString(javaCovAnnotator.getClassCoverageInformationString(qName, coverageDataManager));
}
}
}
}
}
}

@Nullable
private static JavaCoverageAnnotator getCovAnnotator(final CoverageSuitesBundle currentSuite, Project project) {
if (currentSuite != null) {
final CoverageAnnotator coverageAnnotator = currentSuite.getAnnotator(project);
if (coverageAnnotator instanceof JavaCoverageAnnotator) {
return (JavaCoverageAnnotator) coverageAnnotator;
}
@Nullable
private static JavaCoverageAnnotator getCovAnnotator(CoverageSuitesBundle currentSuite, Project project) {
if (currentSuite != null && currentSuite.getAnnotator(project) instanceof JavaCoverageAnnotator javaCoverageAnnotator) {
return javaCoverageAnnotator;
}
return null;
}
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ public boolean canRun(@Nonnull String executorId, @Nonnull RunProfile profile) {
return executorId.equals(CoverageExecutor.EXECUTOR_ID)
// && profile instanceof ModuleBasedConfiguration
&& !(profile instanceof RunConfigurationWithSuppressedDefaultRunAction)
&& profile instanceof RunConfigurationBase
&& profile instanceof RunConfigurationBase runConfigurationBase
&& myApplication.getExtensionPoint(CoverageEngine.class)
.findExtensionOrFail(JavaCoverageEngine.class).isApplicableTo((RunConfigurationBase)profile);
.findExtensionOrFail(JavaCoverageEngine.class).isApplicableTo(runConfigurationBase);
}
catch (Exception e) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,75 +13,78 @@
import java.io.File;
import java.io.IOException;

/*
* User: anna
* Date: 20-May-2008
/**
* @author anna
* @since 2008-05-20
*/
@ExtensionImpl
public class IDEACoverageRunner extends JavaCoverageRunner {
private static final Logger LOG = Logger.getInstance(IDEACoverageRunner.class);
private static final Logger LOG = Logger.getInstance(IDEACoverageRunner.class);

@Override
public ProjectData loadCoverageData(@Nonnull final File sessionDataFile, @Nullable final CoverageSuite coverageSuite) {
return ProjectDataLoader.load(sessionDataFile);
}
@Override
public ProjectData loadCoverageData(@Nonnull File sessionDataFile, @Nullable CoverageSuite coverageSuite) {
return ProjectDataLoader.load(sessionDataFile);
}

@Override
public void appendCoverageArgument(final String sessionDataFilePath,
final String[] patterns,
final OwnJavaParameters javaParameters,
final boolean collectLineInfo,
final boolean isSampling) {
StringBuilder argument = new StringBuilder("-javaagent:");
File agentFile = new File(PluginManager.getPluginPath(IDEACoverageRunner.class), "coverage/consulo/agent.jar");
@Override
public void appendCoverageArgument(
String sessionDataFilePath,
String[] patterns,
OwnJavaParameters javaParameters,
boolean collectLineInfo,
boolean isSampling
) {
StringBuilder argument = new StringBuilder("-javaagent:");
File agentFile = new File(PluginManager.getPluginPath(IDEACoverageRunner.class), "coverage/consulo/agent.jar");

final String parentPath = handleSpacesInPath(agentFile);
argument.append(parentPath).append(File.separator).append(agentFile.getName());
argument.append("=");
try {
final File tempFile = createTempFile();
tempFile.deleteOnExit();
write2file(tempFile, sessionDataFilePath);
write2file(tempFile, String.valueOf(collectLineInfo));
write2file(tempFile, Boolean.FALSE.toString()); //append unloaded
write2file(tempFile, Boolean.FALSE.toString());//merge with existing
write2file(tempFile, String.valueOf(isSampling));
if (patterns != null) {
for (String coveragePattern : patterns) {
coveragePattern = coveragePattern.replace("$", "\\$").replace(".", "\\.").replaceAll("\\*", ".*");
if (!coveragePattern.endsWith(".*")) { //include inner classes
coveragePattern += "(\\$.*)*";
}
write2file(tempFile, coveragePattern);
String parentPath = handleSpacesInPath(agentFile);
argument.append(parentPath).append(File.separator).append(agentFile.getName());
argument.append("=");
try {
File tempFile = createTempFile();
tempFile.deleteOnExit();
write2file(tempFile, sessionDataFilePath);
write2file(tempFile, String.valueOf(collectLineInfo));
write2file(tempFile, Boolean.FALSE.toString()); //append unloaded
write2file(tempFile, Boolean.FALSE.toString());//merge with existing
write2file(tempFile, String.valueOf(isSampling));
if (patterns != null) {
for (String coveragePattern : patterns) {
coveragePattern = coveragePattern.replace("$", "\\$").replace(".", "\\.").replaceAll("\\*", ".*");
if (!coveragePattern.endsWith(".*")) { //include inner classes
coveragePattern += "(\\$.*)*";
}
write2file(tempFile, coveragePattern);
}
}
argument.append(tempFile.getCanonicalPath());
}
catch (IOException e) {
LOG.info("Coverage was not enabled", e);
return;
}
}
argument.append(tempFile.getCanonicalPath());
} catch (IOException e) {
LOG.info("Coverage was not enabled", e);
return;
}

javaParameters.getVMParametersList().add(argument.toString());
}
javaParameters.getVMParametersList().add(argument.toString());
}


@Override
public String getPresentableName() {
return "Consulo (Internal)";
}
@Override
public String getPresentableName() {
return "Consulo (Internal)";
}

@Override
public String getId() {
return "idea";
}
@Override
public String getId() {
return "idea";
}

@Override
public String getDataFileExtension() {
return "ic";
}
@Override
public String getDataFileExtension() {
return "ic";
}

@Override
public boolean isCoverageByTestApplicable() {
return true;
}
@Override
public boolean isCoverageByTestApplicable() {
return true;
}
}
Loading
Loading