mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[coverage] Refactor JavaCoverageEngine
GitOrigin-RevId: ae536364a6d21fd43c771327dba86e7cbf4a82fd
This commit is contained in:
committed by
intellij-monorepo-bot
parent
c9d9f2b14e
commit
fa3b739293
@@ -245,7 +245,7 @@ public class JavaCoverageEngine extends CoverageEngine {
|
||||
@NotNull
|
||||
@Override
|
||||
public CoverageEnabledConfiguration createCoverageEnabledConfiguration(@NotNull final RunConfigurationBase conf) {
|
||||
return new JavaCoverageEnabledConfiguration(conf, this);
|
||||
return new JavaCoverageEnabledConfiguration(conf);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -265,10 +265,10 @@ public class JavaCoverageEngine extends CoverageEngine {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CoverageSuite createCoverageSuite(@NotNull final CoverageRunner covRunner,
|
||||
@NotNull final String name,
|
||||
@NotNull final CoverageFileProvider coverageDataFileProvider,
|
||||
@NotNull final CoverageEnabledConfiguration config) {
|
||||
public CoverageSuite createCoverageSuite(@NotNull CoverageRunner covRunner,
|
||||
@NotNull String name,
|
||||
@NotNull CoverageFileProvider coverageDataFileProvider,
|
||||
@NotNull CoverageEnabledConfiguration config) {
|
||||
if (config instanceof JavaCoverageEnabledConfiguration javaConfig) {
|
||||
return createSuite(covRunner, name, coverageDataFileProvider,
|
||||
javaConfig.getPatterns(),
|
||||
|
||||
@@ -77,6 +77,14 @@ public class JavaCoverageSuite extends BaseCoverageSuite {
|
||||
return getPackageNames(myExcludePatterns);
|
||||
}
|
||||
|
||||
public final String @NotNull [] getFilteredClassNames() {
|
||||
return getClassNames(myIncludeFilters);
|
||||
}
|
||||
|
||||
public final String @NotNull [] getExcludedClassNames() {
|
||||
return getClassNames(myExcludePatterns);
|
||||
}
|
||||
|
||||
final String @Nullable [] getIncludeFilters() {
|
||||
return myIncludeFilters;
|
||||
}
|
||||
@@ -101,91 +109,10 @@ public class JavaCoverageSuite extends BaseCoverageSuite {
|
||||
mySkipUnloadedClassesAnalysis = skipUnloadedClassesAnalysis;
|
||||
}
|
||||
|
||||
private static String[] getPackageNames(String[] filters) {
|
||||
if (filters == null || filters.length == 0) return ArrayUtilRt.EMPTY_STRING_ARRAY;
|
||||
List<String> result = new ArrayList<>();
|
||||
for (String filter : filters) {
|
||||
if (filter.equals("*")) {
|
||||
result.add(""); //default package
|
||||
}
|
||||
else if (filter.endsWith(".*")) result.add(filter.substring(0, filter.length() - 2));
|
||||
}
|
||||
return ArrayUtilRt.toStringArray(result);
|
||||
}
|
||||
|
||||
public final String @NotNull [] getFilteredClassNames() {
|
||||
return getClassNames(myIncludeFilters);
|
||||
}
|
||||
|
||||
public final String @NotNull [] getExcludedClassNames() {
|
||||
return getClassNames(myExcludePatterns);
|
||||
}
|
||||
|
||||
private static String @NotNull [] getClassNames(final String[] filters) {
|
||||
if (filters == null) return ArrayUtilRt.EMPTY_STRING_ARRAY;
|
||||
List<String> result = new ArrayList<>();
|
||||
for (String filter : filters) {
|
||||
if (!filter.equals("*") && !filter.endsWith(".*")) result.add(filter);
|
||||
}
|
||||
return ArrayUtilRt.toStringArray(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void readExternal(Element element) throws InvalidDataException {
|
||||
super.readExternal(element);
|
||||
|
||||
// filters
|
||||
myIncludeFilters = readFilters(element, FILTER);
|
||||
myExcludePatterns = readFilters(element, EXCLUDED_FILTER);
|
||||
|
||||
if (myRunner == null) {
|
||||
myRunner = CoverageRunner.getInstance(IDEACoverageRunner.class); //default
|
||||
}
|
||||
}
|
||||
|
||||
private static String[] readFilters(Element element, final String tagName) {
|
||||
final List<Element> children = element.getChildren(tagName);
|
||||
List<String> filters = new ArrayList<>();
|
||||
for (Element child : children) {
|
||||
filters.add(child.getValue());
|
||||
}
|
||||
return filters.isEmpty() ? null : ArrayUtilRt.toStringArray(filters);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void writeExternal(final Element element) throws WriteExternalException {
|
||||
super.writeExternal(element);
|
||||
writeFilters(element, myIncludeFilters, FILTER);
|
||||
writeFilters(element, myExcludePatterns, EXCLUDED_FILTER);
|
||||
final CoverageRunner coverageRunner = getRunner();
|
||||
if (coverageRunner != null) {
|
||||
element.setAttribute(COVERAGE_RUNNER, coverageRunner.getId());
|
||||
}
|
||||
}
|
||||
|
||||
private static void writeFilters(Element element, final String[] filters, final String tagName) {
|
||||
if (filters != null) {
|
||||
for (String filter : filters) {
|
||||
final Element filterElement = new Element(tagName);
|
||||
filterElement.setText(filter);
|
||||
element.addContent(filterElement);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public final boolean isClassFiltered(final String classFQName) {
|
||||
return isClassFiltered(classFQName, getFilteredClassNames());
|
||||
}
|
||||
|
||||
public static boolean isClassFiltered(String classFQName, String[] classPatterns) {
|
||||
for (String className : classPatterns) {
|
||||
if (className.equals(classFQName) || classFQName.startsWith(className) && classFQName.charAt(className.length()) == '$') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public final boolean isPackageFiltered(final String packageFQName) {
|
||||
for (String name : getExcludedPackageNames()) {
|
||||
if (packageFQName.equals(name) || packageFQName.startsWith(name + ".")) return false;
|
||||
@@ -231,15 +158,6 @@ public class JavaCoverageSuite extends BaseCoverageSuite {
|
||||
});
|
||||
}
|
||||
|
||||
private static boolean isSubPackage(String[] filters, String filter) {
|
||||
for (String supPackageFilter : filters) {
|
||||
if (filter.startsWith(supPackageFilter + ".")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public final @NotNull List<PsiClass> getCurrentSuiteClasses(final Project project) {
|
||||
final List<PsiClass> classes = new ArrayList<>();
|
||||
final String[] classNames = getFilteredClassNames();
|
||||
@@ -250,7 +168,7 @@ public class JavaCoverageSuite extends BaseCoverageSuite {
|
||||
GlobalSearchScope searchScope = GlobalSearchScope.allScope(project);
|
||||
RunConfigurationBase<?> configuration = getConfiguration();
|
||||
if (configuration instanceof ModuleBasedConfiguration) {
|
||||
Module module = ((ModuleBasedConfiguration<?,?>)configuration).getConfigurationModule().getModule();
|
||||
Module module = ((ModuleBasedConfiguration<?, ?>)configuration).getConfigurationModule().getModule();
|
||||
if (module != null) {
|
||||
searchScope = GlobalSearchScope.moduleRuntimeScope(module, isTrackTestFolders());
|
||||
}
|
||||
@@ -266,4 +184,86 @@ public class JavaCoverageSuite extends BaseCoverageSuite {
|
||||
|
||||
return classes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void readExternal(Element element) throws InvalidDataException {
|
||||
super.readExternal(element);
|
||||
|
||||
// filters
|
||||
myIncludeFilters = readFilters(element, FILTER);
|
||||
myExcludePatterns = readFilters(element, EXCLUDED_FILTER);
|
||||
|
||||
if (myRunner == null) {
|
||||
myRunner = CoverageRunner.getInstance(IDEACoverageRunner.class); //default
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void writeExternal(final Element element) throws WriteExternalException {
|
||||
super.writeExternal(element);
|
||||
writeFilters(element, myIncludeFilters, FILTER);
|
||||
writeFilters(element, myExcludePatterns, EXCLUDED_FILTER);
|
||||
final CoverageRunner coverageRunner = getRunner();
|
||||
if (coverageRunner != null) {
|
||||
element.setAttribute(COVERAGE_RUNNER, coverageRunner.getId());
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isClassFiltered(String classFQName, String[] classPatterns) {
|
||||
for (String className : classPatterns) {
|
||||
if (className.equals(classFQName) || classFQName.startsWith(className) && classFQName.charAt(className.length()) == '$') {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static boolean isSubPackage(String[] filters, String filter) {
|
||||
for (String supPackageFilter : filters) {
|
||||
if (filter.startsWith(supPackageFilter + ".")) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private static String[] getPackageNames(String[] filters) {
|
||||
if (filters == null || filters.length == 0) return ArrayUtilRt.EMPTY_STRING_ARRAY;
|
||||
List<String> result = new ArrayList<>();
|
||||
for (String filter : filters) {
|
||||
if (filter.equals("*")) {
|
||||
result.add(""); //default package
|
||||
}
|
||||
else if (filter.endsWith(".*")) result.add(filter.substring(0, filter.length() - 2));
|
||||
}
|
||||
return ArrayUtilRt.toStringArray(result);
|
||||
}
|
||||
|
||||
private static String @NotNull [] getClassNames(final String[] filters) {
|
||||
if (filters == null) return ArrayUtilRt.EMPTY_STRING_ARRAY;
|
||||
List<String> result = new ArrayList<>();
|
||||
for (String filter : filters) {
|
||||
if (!filter.equals("*") && !filter.endsWith(".*")) result.add(filter);
|
||||
}
|
||||
return ArrayUtilRt.toStringArray(result);
|
||||
}
|
||||
|
||||
private static String[] readFilters(Element element, final String tagName) {
|
||||
final List<Element> children = element.getChildren(tagName);
|
||||
List<String> filters = new ArrayList<>();
|
||||
for (Element child : children) {
|
||||
filters.add(child.getValue());
|
||||
}
|
||||
return filters.isEmpty() ? null : ArrayUtilRt.toStringArray(filters);
|
||||
}
|
||||
|
||||
private static void writeFilters(Element element, final String[] filters, final String tagName) {
|
||||
if (filters != null) {
|
||||
for (String filter : filters) {
|
||||
final Element filterElement = new Element(tagName);
|
||||
filterElement.setText(filter);
|
||||
element.addContent(filterElement);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ class XMLReportEngine : CoverageEngine() {
|
||||
trackTestFolders: Boolean,
|
||||
project: Project?): CoverageSuite? {
|
||||
if (covRunner !is XMLReportRunner) return null
|
||||
return XMLReportSuite(this, name, coverageDataFileProvider, lastCoverageTimeStamp, trackTestFolders, covRunner, project)
|
||||
return XMLReportSuite(name, project, covRunner, coverageDataFileProvider, lastCoverageTimeStamp, this)
|
||||
}
|
||||
|
||||
override fun createCoverageSuite(covRunner: CoverageRunner,
|
||||
@@ -35,7 +35,7 @@ class XMLReportEngine : CoverageEngine() {
|
||||
|
||||
override fun createEmptyCoverageSuite(coverageRunner: CoverageRunner): XMLReportSuite? {
|
||||
if (coverageRunner !is XMLReportRunner) return null
|
||||
return XMLReportSuite(this, coverageRunner)
|
||||
return XMLReportSuite(this)
|
||||
}
|
||||
|
||||
override fun coverageEditorHighlightingApplicableTo(psiFile: PsiFile) = psiFile is PsiClassOwner
|
||||
|
||||
@@ -11,16 +11,16 @@ import com.intellij.rt.coverage.report.XMLProjectData
|
||||
import com.intellij.rt.coverage.report.XMLProjectData.FileInfo
|
||||
import java.io.File
|
||||
|
||||
class XMLReportSuite(engine: XMLReportEngine,
|
||||
name: String?,
|
||||
fileProvider: CoverageFileProvider?,
|
||||
lastCoverageTimeStamp: Long,
|
||||
trackTestFolders: Boolean,
|
||||
coverageRunner: XMLReportRunner,
|
||||
project: Project?) : JavaCoverageSuite(name, fileProvider, emptyArray(), emptyArray(), lastCoverageTimeStamp, false,
|
||||
true, trackTestFolders,
|
||||
coverageRunner, engine, project) {
|
||||
constructor(engine: XMLReportEngine, coverageRunner: XMLReportRunner) : this(engine, null, null, 0, false, coverageRunner, null)
|
||||
class XMLReportSuite : JavaCoverageSuite {
|
||||
constructor(name: String?,
|
||||
project: Project?,
|
||||
coverageRunner: XMLReportRunner,
|
||||
fileProvider: CoverageFileProvider?,
|
||||
lastCoverageTimeStamp: Long,
|
||||
engine: XMLReportEngine) : super(name, fileProvider, emptyArray(), emptyArray(), lastCoverageTimeStamp, false, true, false,
|
||||
coverageRunner, engine, project)
|
||||
|
||||
constructor(engine: XMLReportEngine) : super(engine)
|
||||
|
||||
private var data: XMLProjectData? = null
|
||||
|
||||
|
||||
+1
-2
@@ -40,8 +40,7 @@ public final class JavaCoverageEnabledConfiguration extends CoverageEnabledConfi
|
||||
@NonNls private static final String COVERAGE_MERGE_SUITE_ATT_NAME = "merge_suite";
|
||||
|
||||
|
||||
public JavaCoverageEnabledConfiguration(final RunConfigurationBase configuration,
|
||||
final JavaCoverageEngine coverageProvider) {
|
||||
public JavaCoverageEnabledConfiguration(RunConfigurationBase configuration) {
|
||||
super(configuration);
|
||||
setCoverageRunner(CoverageRunner.getInstance(IDEACoverageRunner.class));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user