From 8da886a55829672f6f076f40eee65762fa20f071 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 8 Dec 2014 13:54:51 +0100 Subject: [PATCH] add generateBriefReport() API for JavaCoverageEngineExtension --- .../com/intellij/coverage/CoverageEngine.java | 14 ++++---- .../intellij/coverage/JavaCoverageEngine.java | 9 +++++ .../coverage/JavaCoverageEngineExtension.java | 34 +++++++++++++++++-- 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/plugins/coverage-common/src/com/intellij/coverage/CoverageEngine.java b/plugins/coverage-common/src/com/intellij/coverage/CoverageEngine.java index f8d8fdaaa884..11e06e40ab4c 100644 --- a/plugins/coverage-common/src/com/intellij/coverage/CoverageEngine.java +++ b/plugins/coverage-common/src/com/intellij/coverage/CoverageEngine.java @@ -269,13 +269,13 @@ public abstract class CoverageEngine { /** * Content of brief report which will be shown by click on coverage icon * - * @param editor - * @param psiFile - * @param lineNumber - * @param startOffset - * @param endOffset - * @param lineData - * @return + * @param editor the editor in which the gutter is displayed. + * @param psiFile the file shown in the editor. + * @param lineNumber the line number which was clicked. + * @param startOffset the start offset of that line in the PSI file. + * @param endOffset the end offset of that line in the PSI file. + * @param lineData the coverage data for the line. + * @return the text to show. */ public String generateBriefReport(@NotNull Editor editor, @NotNull PsiFile psiFile, diff --git a/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java b/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java index 05f62ca2822e..3795ffd705fb 100644 --- a/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java +++ b/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngine.java @@ -389,6 +389,15 @@ public class JavaCoverageEngine extends CoverageEngine { } buf.append(lineData.getHits()).append("\n"); + + for (JavaCoverageEngineExtension extension : Extensions.getExtensions(JavaCoverageEngineExtension.EP_NAME)) { + String report = extension.generateBriefReport(editor, psiFile, lineNumber, startOffset, endOffset, lineData); + if (report != null) { + buf.append(report); + return report; + } + } + final List expressions = new ArrayList(); final Project project = editor.getProject(); diff --git a/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngineExtension.java b/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngineExtension.java index ee27aaa2a250..37bf37bf7b44 100644 --- a/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngineExtension.java +++ b/plugins/coverage/src/com/intellij/coverage/JavaCoverageEngineExtension.java @@ -1,11 +1,13 @@ package com.intellij.coverage; import com.intellij.execution.configurations.RunConfigurationBase; +import com.intellij.openapi.editor.Editor; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.module.Module; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiFile; +import com.intellij.rt.coverage.data.LineData; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -13,8 +15,10 @@ import java.io.File; import java.util.Set; /** - * User: anna - * Date: 2/14/11 + * Allows to customize the Java coverage engine for other JVM-based languages. + * + * @author anna + * @since 2/14/11 */ public abstract class JavaCoverageEngineExtension { public static final ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.javaCoverageEngineExtension"); @@ -25,6 +29,16 @@ public abstract class JavaCoverageEngineExtension { return false; } + /** + * Collects the output .class files generated from a specific source file. + * + * @param srcFile the source file. + * @param output the output root for the module containing the source file. + * @param testoutput the test output root for the module containing the source file. + * @param suite the coverage suite for which the information is being requested. + * @param classFiles the set to be filled with class files produced from this source file. + * @return true if the extension has filled the file list, false if this extension doesn't handle this file type. + */ public boolean collectOutputFiles(@NotNull final PsiFile srcFile, @Nullable final VirtualFile output, @Nullable final VirtualFile testoutput, @@ -32,4 +46,20 @@ public abstract class JavaCoverageEngineExtension { @NotNull final Set classFiles){ return false; } + + /** + * Returns the text to show when clicking on the coverage gutter. The text usually contains the number of true and false branch hits + * for conditional statements. + * + * @param editor the editor in which the gutter is displayed. + * @param file the file shown in the editor. + * @param lineNumber the line number which was clicked. + * @param startOffset the start offset of that line in the PSI file. + * @param endOffset the end offset of that line in the PSI file. + * @param lineData the coverage data for the line. + * @return the text to show, or null if this extension doesn't handle this file type or doesn't have any custom text to show. + */ + public String generateBriefReport(Editor editor, PsiFile file, int lineNumber, int startOffset, int endOffset, LineData lineData) { + return null; + } }