Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Markdown report #4858

Merged
merged 10 commits into from Jun 14, 2022
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)
}