diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtDocumentationProvider.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtDocumentationProvider.kt index 7485cfea2d..027965d7ba 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtDocumentationProvider.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtDocumentationProvider.kt @@ -5,6 +5,7 @@ import com.intellij.codeInsight.javadoc.JavaDocInfoGenerator import com.intellij.lang.java.JavaDocumentationProvider import com.intellij.psi.PsiDocCommentBase import com.intellij.psi.PsiJavaDocumentedElement +import com.intellij.psi.javadoc.PsiDocComment /** * To render UtBot custom JavaDoc tags messages, we need to override basic behaviour of [JavaDocumentationProvider]. @@ -25,12 +26,27 @@ class UtDocumentationProvider : JavaDocumentationProvider() { // get JavaDoc comment rendered by the platform. val baseJavaDocInfo = baseJavaDocInfoGenerator.generateRenderedDocInfo() + return getRenderedDoc(baseJavaDocInfo, docComment, comment) + } + + /** + * Processes JavaDoc generated by IJ platform to render plugin's custom tags correctly. + */ + private fun getRenderedDoc( + baseJavaDocInfo: String?, + docComment: PsiDocComment, + comment: PsiDocCommentBase + ): String? { // add UTBot sections with custom tags. val utJavaDocInfoGenerator = UtJavaDocInfoGenerator() - val javaDocInfoWithUtSections = - utJavaDocInfoGenerator.addUtBotSpecificSectionsToJavaDoc(baseJavaDocInfo, docComment) - - return JavaDocExternalFilter.filterInternalDocInfo(javaDocInfoWithUtSections) + return if (baseJavaDocInfo != null && baseJavaDocInfo.contains("utbot")) { + val javaDocInfoWithUtSections = + utJavaDocInfoGenerator.addUtBotSpecificSectionsToJavaDoc(docComment) + val finalJavaDoc = replaceTagNamesWithMessages(javaDocInfoWithUtSections) + JavaDocExternalFilter.filterInternalDocInfo(finalJavaDoc) + } else { + super.generateRenderedDoc(comment) + } } /** diff --git a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtJavaDocInfoGenerator.kt b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtJavaDocInfoGenerator.kt index ae597280ea..87333f11e5 100644 --- a/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtJavaDocInfoGenerator.kt +++ b/utbot-intellij/src/main/kotlin/org/utbot/intellij/plugin/javadoc/UtJavaDocInfoGenerator.kt @@ -36,17 +36,14 @@ private val logger = KotlinLogging.logger {} * so delete it after updating and use basic [com.intellij.codeInsight.javadoc.JavaDocInfoGenerator]. */ class UtJavaDocInfoGenerator { - fun addUtBotSpecificSectionsToJavaDoc(javadoc: String?, comment: PsiDocComment): String { - val builder = if (javadoc == null) { - StringBuilder() - } else { - StringBuilder(javadoc) - } + fun addUtBotSpecificSectionsToJavaDoc(comment: PsiDocComment): String { + val builder = StringBuilder() val docTagProvider = UtCustomJavaDocTagProvider() docTagProvider.supportedTags.forEach { generateUtTagSection(builder, comment, it) } + return builder.toString() }