Skip to content

Commit

Permalink
Add Markdown report (#4858)
Browse files Browse the repository at this point in the history
Co-authored-by: Brais Gabín <braisgabin@gmail.com>
  • Loading branch information
VitalyVPinchuk and BraisGabin committed Jun 14, 2022
1 parent 43ea42c commit 5d49409
Show file tree
Hide file tree
Showing 23 changed files with 467 additions and 32 deletions.
1 change: 1 addition & 0 deletions detekt-core/build.gradle.kts
Expand Up @@ -10,6 +10,7 @@ dependencies {
implementation(projects.detektMetrics)
implementation(projects.detektPsiUtils)
implementation(projects.detektReportHtml)
implementation(projects.detektReportMd)
implementation(projects.detektReportTxt)
implementation(projects.detektReportXml)
implementation(projects.detektReportSarif)
Expand Down
@@ -1,6 +1,7 @@
package io.gitlab.arturbosch.detekt.core.reporting

import io.github.detekt.report.html.HtmlOutputReport
import io.github.detekt.report.md.MdOutputReport
import io.github.detekt.report.sarif.SarifOutputReport
import io.github.detekt.report.txt.TxtOutputReport
import io.github.detekt.report.xml.XmlOutputReport
Expand All @@ -18,6 +19,7 @@ internal fun defaultReportMapping(reportId: String) = when (reportId) {
XmlOutputReport::class.java.simpleName -> "xml"
HtmlOutputReport::class.java.simpleName -> "html"
SarifOutputReport::class.java.simpleName -> "sarif"
MdOutputReport::class.java.simpleName -> "md"
else -> reportId
}

Expand Down
1 change: 1 addition & 0 deletions detekt-core/src/main/resources/default-detekt-config.yml
Expand Up @@ -46,6 +46,7 @@ output-reports:
# - 'TxtOutputReport'
# - 'XmlOutputReport'
# - 'HtmlOutputReport'
# - 'MdOutputReport'

comments:
active: true
Expand Down
@@ -1,6 +1,7 @@
package io.gitlab.arturbosch.detekt.core.reporting

import io.github.detekt.report.html.HtmlOutputReport
import io.github.detekt.report.md.MdOutputReport
import io.github.detekt.report.txt.TxtOutputReport
import io.github.detekt.report.xml.XmlOutputReport
import io.github.detekt.test.utils.StringPrintStream
Expand All @@ -24,6 +25,7 @@ class OutputFacadeSpec {
val plainOutputPath = createTempFileForTest("detekt", ".txt")
val htmlOutputPath = createTempFileForTest("detekt", ".html")
val xmlOutputPath = createTempFileForTest("detekt", ".xml")
val mdOutputPath = createTempFileForTest("detekt", ".md")

val spec = createNullLoggingSpec {
project {
Expand All @@ -33,6 +35,7 @@ class OutputFacadeSpec {
report { "html" to htmlOutputPath }
report { "txt" to plainOutputPath }
report { "xml" to xmlOutputPath }
report { "md" to mdOutputPath }
}
logging {
outputChannel = printStream
Expand All @@ -44,7 +47,8 @@ class OutputFacadeSpec {
assertThat(printStream.toString()).contains(
"Successfully generated ${TxtOutputReport().name} at $plainOutputPath",
"Successfully generated ${XmlOutputReport().name} at $xmlOutputPath",
"Successfully generated ${HtmlOutputReport().name} at $htmlOutputPath"
"Successfully generated ${HtmlOutputReport().name} at $htmlOutputPath",
"Successfully generated ${MdOutputReport().name} at $mdOutputPath"
)
}
}
@@ -1,6 +1,7 @@
package io.gitlab.arturbosch.detekt.core.reporting

import io.github.detekt.report.html.HtmlOutputReport
import io.github.detekt.report.md.MdOutputReport
import io.github.detekt.report.txt.TxtOutputReport
import io.github.detekt.report.xml.XmlOutputReport
import io.github.detekt.test.utils.resourceAsPath
Expand Down Expand Up @@ -28,11 +29,12 @@ class OutputReportsSpec {
report { "txt" to Paths.get("/tmp/path2") }
report { reportUnderTest to Paths.get("/tmp/path3") }
report { "html" to Paths.get("D:_Gradle\\xxx\\xxx\\build\\reports\\detekt\\detekt.html") }
report { "md" to Paths.get("/tmp/path4") }
}.build().reports.toList()

@Test
fun `should parse multiple report entries`() {
assertThat(reports).hasSize(4)
assertThat(reports).hasSize(5)
}

@Test
Expand Down Expand Up @@ -66,6 +68,13 @@ class OutputReportsSpec {
)
}

@Test
fun `it should properly parse MD report entry`() {
val mdRepot = reports[4]
assertThat(mdRepot.type).isEqualTo(defaultReportMapping(MdOutputReport::class.java.simpleName))
assertThat(mdRepot.path).isEqualTo(Paths.get("/tmp/path4"))
}

@Nested
inner class `default report ids` {

Expand Down
1 change: 1 addition & 0 deletions detekt-generator/build.gradle.kts
Expand Up @@ -10,6 +10,7 @@ dependencies {
implementation(projects.detektRulesEmpty)
implementation(projects.detektFormatting)
implementation(projects.detektCli)
implementation(projects.detektUtils)
implementation(libs.jcommander)

testImplementation(projects.detektCore)
Expand Down
@@ -1,10 +1,10 @@
package io.gitlab.arturbosch.detekt.generator

import io.github.detekt.utils.yaml
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetPage
import io.gitlab.arturbosch.detekt.generator.out.MarkdownWriter
import io.gitlab.arturbosch.detekt.generator.out.PropertiesWriter
import io.gitlab.arturbosch.detekt.generator.out.YamlWriter
import io.gitlab.arturbosch.detekt.generator.out.yaml
import io.gitlab.arturbosch.detekt.generator.printer.DeprecatedPrinter
import io.gitlab.arturbosch.detekt.generator.printer.RuleSetPagePrinter
import io.gitlab.arturbosch.detekt.generator.printer.defaultconfig.ConfigPrinter
Expand Down
@@ -1,10 +1,10 @@
package io.gitlab.arturbosch.detekt.generator.collection

import io.github.detekt.utils.YamlNode
import io.github.detekt.utils.keyValue
import io.github.detekt.utils.list
import io.github.detekt.utils.listOfMaps
import io.gitlab.arturbosch.detekt.api.ValuesWithReason
import io.gitlab.arturbosch.detekt.generator.out.YamlNode
import io.gitlab.arturbosch.detekt.generator.out.keyValue
import io.gitlab.arturbosch.detekt.generator.out.list
import io.gitlab.arturbosch.detekt.generator.out.listOfMaps

sealed interface DefaultValue {

Expand Down
@@ -1,14 +1,14 @@
package io.gitlab.arturbosch.detekt.generator.printer

import io.github.detekt.utils.bold
import io.github.detekt.utils.code
import io.github.detekt.utils.crossOut
import io.github.detekt.utils.description
import io.github.detekt.utils.h4
import io.github.detekt.utils.item
import io.github.detekt.utils.list
import io.github.detekt.utils.markdown
import io.gitlab.arturbosch.detekt.generator.collection.Configuration
import io.gitlab.arturbosch.detekt.generator.out.bold
import io.gitlab.arturbosch.detekt.generator.out.code
import io.gitlab.arturbosch.detekt.generator.out.crossOut
import io.gitlab.arturbosch.detekt.generator.out.description
import io.gitlab.arturbosch.detekt.generator.out.h4
import io.gitlab.arturbosch.detekt.generator.out.item
import io.gitlab.arturbosch.detekt.generator.out.list
import io.gitlab.arturbosch.detekt.generator.out.markdown

internal object RuleConfigurationPrinter : DocumentationPrinter<List<Configuration>> {

Expand Down
@@ -1,14 +1,14 @@
package io.gitlab.arturbosch.detekt.generator.printer

import io.github.detekt.utils.MarkdownContent
import io.github.detekt.utils.bold
import io.github.detekt.utils.codeBlock
import io.github.detekt.utils.h3
import io.github.detekt.utils.h4
import io.github.detekt.utils.markdown
import io.github.detekt.utils.paragraph
import io.gitlab.arturbosch.detekt.generator.collection.Active
import io.gitlab.arturbosch.detekt.generator.collection.Rule
import io.gitlab.arturbosch.detekt.generator.out.MarkdownContent
import io.gitlab.arturbosch.detekt.generator.out.bold
import io.gitlab.arturbosch.detekt.generator.out.codeBlock
import io.gitlab.arturbosch.detekt.generator.out.h3
import io.gitlab.arturbosch.detekt.generator.out.h4
import io.gitlab.arturbosch.detekt.generator.out.markdown
import io.gitlab.arturbosch.detekt.generator.out.paragraph

internal object RulePrinter : DocumentationPrinter<Rule> {

Expand Down
@@ -1,8 +1,8 @@
package io.gitlab.arturbosch.detekt.generator.printer

import io.github.detekt.utils.markdown
import io.github.detekt.utils.paragraph
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetPage
import io.gitlab.arturbosch.detekt.generator.out.markdown
import io.gitlab.arturbosch.detekt.generator.out.paragraph

object RuleSetPagePrinter : DocumentationPrinter<RuleSetPage> {

Expand Down
@@ -1,7 +1,7 @@
package io.gitlab.arturbosch.detekt.generator.printer.defaultconfig

import io.github.detekt.utils.yaml
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetPage
import io.gitlab.arturbosch.detekt.generator.out.yaml
import io.gitlab.arturbosch.detekt.generator.printer.DocumentationPrinter

object ConfigPrinter : DocumentationPrinter<List<RuleSetPage>> {
Expand Down Expand Up @@ -81,5 +81,6 @@ object ConfigPrinter : DocumentationPrinter<List<RuleSetPage>> {
# - 'TxtOutputReport'
# - 'XmlOutputReport'
# - 'HtmlOutputReport'
# - 'MdOutputReport'
""".trimIndent()
}
@@ -1,13 +1,13 @@
package io.gitlab.arturbosch.detekt.generator.printer.defaultconfig

import io.github.detekt.utils.YamlNode
import io.github.detekt.utils.keyValue
import io.github.detekt.utils.node
import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.generator.collection.Configuration
import io.gitlab.arturbosch.detekt.generator.collection.Rule
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetPage
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetProvider
import io.gitlab.arturbosch.detekt.generator.out.YamlNode
import io.gitlab.arturbosch.detekt.generator.out.keyValue
import io.gitlab.arturbosch.detekt.generator.out.node

internal fun YamlNode.printRuleSetPage(ruleSetPage: RuleSetPage) {
printRuleSet(ruleSetPage.ruleSet, ruleSetPage.rules)
Expand Down
@@ -1,5 +1,6 @@
package io.gitlab.arturbosch.detekt.generator.printer.defaultconfig

import io.github.detekt.utils.yaml
import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.valuesWithReason
import io.gitlab.arturbosch.detekt.generator.collection.Active
Expand All @@ -8,7 +9,6 @@ import io.gitlab.arturbosch.detekt.generator.collection.DefaultValue
import io.gitlab.arturbosch.detekt.generator.collection.Inactive
import io.gitlab.arturbosch.detekt.generator.collection.Rule
import io.gitlab.arturbosch.detekt.generator.collection.RuleSetProvider
import io.gitlab.arturbosch.detekt.generator.out.yaml
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
Expand Down
13 changes: 13 additions & 0 deletions detekt-report-md/build.gradle.kts
@@ -0,0 +1,13 @@
plugins {
id("module")
}

dependencies {
implementation(projects.detektMetrics)
implementation(projects.detektApi)
implementation(projects.detektUtils)

testImplementation(testFixtures(projects.detektApi))
testImplementation(libs.mockk)
testImplementation(libs.assertj)
}

0 comments on commit 5d49409

Please sign in to comment.