mirror of
https://github.com/jlengrand/detekt.git
synced 2026-03-10 08:11:23 +00:00
Extract xml and html reports to own modules (#2750)
* Move xml report to own module * Extract common complexity report logic to metrics module This allows to share complexity report logic between the console report and a report-html module. * Move whichXXX functions from DebugUtils to api module for now More modules use the detekt version at runtime and it is nice to have it in plugins as the IntelliJ or Sonar plugin. We should later move this helpers to the tooling-api. * Extract html report to own module * Merge all service files when packaging cli fatJar * Write the detekt version to all jar manifest files This allows to retrieve the detekt version from any jar at runtime. * Extract txt report to own module
This commit is contained in:
@@ -26,6 +26,13 @@ subprojects {
|
||||
plugin("jacoco")
|
||||
}
|
||||
|
||||
// bundle detekt's version for all jars to use it at runtime
|
||||
tasks.withType<Jar>().configureEach {
|
||||
manifest {
|
||||
attributes(mapOf("DetektVersion" to Versions.DETEKT))
|
||||
}
|
||||
}
|
||||
|
||||
jacoco.toolVersion = Versions.JACOCO
|
||||
|
||||
tasks.withType<Test>().configureEach {
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||
import com.jfrog.bintray.gradle.BintrayExtension
|
||||
import groovy.lang.GroovyObject
|
||||
import org.jfrog.gradle.plugin.artifactory.dsl.ArtifactoryPluginConvention
|
||||
@@ -16,6 +17,10 @@ project(":detekt-cli") {
|
||||
plugin("application")
|
||||
plugin("com.github.johnrengelman.shadow")
|
||||
}
|
||||
|
||||
tasks.withType<ShadowJar>() {
|
||||
mergeServiceFiles()
|
||||
}
|
||||
}
|
||||
|
||||
subprojects {
|
||||
|
||||
@@ -1,17 +1,27 @@
|
||||
package io.gitlab.arturbosch.detekt.core
|
||||
package io.gitlab.arturbosch.detekt.api.internal
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Extension
|
||||
import java.net.URL
|
||||
import java.util.jar.Manifest
|
||||
|
||||
/**
|
||||
* Returns the name of the running OS.
|
||||
*/
|
||||
fun whichOS(): String = System.getProperty("os.name")
|
||||
|
||||
/**
|
||||
* Returns the version of the running JVM.
|
||||
*/
|
||||
fun whichJava(): String = System.getProperty("java.runtime.version")
|
||||
|
||||
/**
|
||||
* Returns the bundled detekt version.
|
||||
*/
|
||||
fun whichDetekt(): String? {
|
||||
fun readVersion(resource: URL): String? = resource.openStream()
|
||||
.use { Manifest(it).mainAttributes.getValue("DetektVersion") }
|
||||
|
||||
return Detektor::class.java.classLoader.getResources("META-INF/MANIFEST.MF")
|
||||
return Extension::class.java.classLoader.getResources("META-INF/MANIFEST.MF")
|
||||
.asSequence()
|
||||
.mapNotNull { runCatching { readVersion(it) }.getOrNull() }
|
||||
.firstOrNull()
|
||||
@@ -5,23 +5,16 @@ application {
|
||||
dependencies {
|
||||
implementation(kotlin("stdlib-jdk8"))
|
||||
implementation(project(":detekt-core"))
|
||||
implementation(project(":detekt-report-html"))
|
||||
implementation(project(":detekt-report-txt"))
|
||||
implementation(project(":detekt-report-xml"))
|
||||
runtimeOnly(project(":detekt-rules"))
|
||||
implementation("com.beust:jcommander:${Versions.JCOMMANDER}")
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:${Versions.KOTLINX_HTML}") {
|
||||
exclude(group = "org.jetbrains.kotlin")
|
||||
}
|
||||
|
||||
testImplementation(project(":detekt-test"))
|
||||
testImplementation(project(":detekt-rules"))
|
||||
}
|
||||
|
||||
// bundle detekt's version for debug logging on rule exceptions
|
||||
tasks.withType<Jar>().configureEach {
|
||||
manifest {
|
||||
attributes(mapOf("DetektVersion" to Versions.DETEKT))
|
||||
}
|
||||
}
|
||||
|
||||
// Implements https://github.com/brianm/really-executable-jars-maven-plugin maven plugin behaviour.
|
||||
// To check details how it works, see http://skife.org/java/unix/2011/06/20/really_executable_jars.html.
|
||||
// Extracted from https://github.com/pinterest/ktlint/blob/a86d1c76c44d0a1c1adc3f756f36d8b4cac15d32/ktlint/build.gradle#L40-L57
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package io.gitlab.arturbosch.detekt.cli
|
||||
|
||||
import io.gitlab.arturbosch.detekt.cli.out.HtmlOutputReport
|
||||
import io.gitlab.arturbosch.detekt.cli.out.TxtOutputReport
|
||||
import io.gitlab.arturbosch.detekt.cli.out.XmlOutputReport
|
||||
import io.github.detekt.report.html.HtmlOutputReport
|
||||
import io.github.detekt.report.txt.TxtOutputReport
|
||||
import io.github.detekt.report.xml.XmlOutputReport
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.console
|
||||
|
||||
import io.github.detekt.metrics.ComplexityReportGenerator
|
||||
import io.gitlab.arturbosch.detekt.api.ConsoleReport
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.runners
|
||||
|
||||
import io.gitlab.arturbosch.detekt.core.whichDetekt
|
||||
import io.gitlab.arturbosch.detekt.api.internal.whichDetekt
|
||||
import java.io.PrintStream
|
||||
|
||||
class VersionPrinter(private val outputPrinter: PrintStream) : Executable {
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
io.gitlab.arturbosch.detekt.cli.out.TxtOutputReport
|
||||
io.gitlab.arturbosch.detekt.cli.out.XmlOutputReport
|
||||
io.gitlab.arturbosch.detekt.cli.out.HtmlOutputReport
|
||||
@@ -4,6 +4,8 @@ import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
import io.gitlab.arturbosch.detekt.test.TestConfig
|
||||
import io.gitlab.arturbosch.detekt.test.TestDetektion
|
||||
import io.gitlab.arturbosch.detekt.test.createCorrectableFinding
|
||||
import io.gitlab.arturbosch.detekt.test.createFinding
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.spekframework.spek2.Spek
|
||||
import org.spekframework.spek2.style.specification.describe
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
package io.gitlab.arturbosch.detekt.cli
|
||||
|
||||
import io.github.detekt.report.html.HtmlOutputReport
|
||||
import io.github.detekt.report.txt.TxtOutputReport
|
||||
import io.github.detekt.report.xml.XmlOutputReport
|
||||
import io.github.detekt.test.utils.StringPrintStream
|
||||
import io.github.detekt.test.utils.resource
|
||||
import io.gitlab.arturbosch.detekt.cli.out.HtmlOutputReport
|
||||
import io.gitlab.arturbosch.detekt.cli.out.TxtOutputReport
|
||||
import io.gitlab.arturbosch.detekt.cli.out.XmlOutputReport
|
||||
import io.gitlab.arturbosch.detekt.core.DetektResult
|
||||
import io.gitlab.arturbosch.detekt.test.createFinding
|
||||
import io.gitlab.arturbosch.detekt.test.createProcessingSettings
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.jetbrains.kotlin.utils.closeQuietly
|
||||
|
||||
@@ -2,71 +2,9 @@ package io.gitlab.arturbosch.detekt.cli
|
||||
|
||||
import io.github.detekt.test.utils.NullPrintStream
|
||||
import io.github.detekt.test.utils.resource
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.CorrectableCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Debt
|
||||
import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Location
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.SourceLocation
|
||||
import io.gitlab.arturbosch.detekt.api.TextLocation
|
||||
import io.gitlab.arturbosch.detekt.core.ModificationNotification
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import java.nio.file.Paths
|
||||
|
||||
fun createFinding(ruleName: String = "TestSmell", fileName: String = "TestFile.kt") =
|
||||
CodeSmell(createIssue(ruleName), createEntity(fileName), "TestMessage")
|
||||
|
||||
fun createCorrectableFinding(ruleName: String = "TestSmell", fileName: String = "TestFile.kt") =
|
||||
CorrectableCodeSmell(createIssue(ruleName), createEntity(fileName), "TestMessage", autoCorrectEnabled = true)
|
||||
|
||||
fun createFinding(
|
||||
issue: Issue,
|
||||
entity: Entity,
|
||||
message: String = entity.signature
|
||||
) = CodeSmell(
|
||||
issue = issue,
|
||||
entity = entity,
|
||||
message = message
|
||||
)
|
||||
|
||||
fun createIssue(id: String) = Issue(
|
||||
id = id,
|
||||
severity = Severity.CodeSmell,
|
||||
description = "Description $id",
|
||||
debt = Debt.FIVE_MINS
|
||||
)
|
||||
|
||||
fun createEntity(
|
||||
file: String,
|
||||
position: Pair<Int, Int> = 1 to 1,
|
||||
text: IntRange = 0..0,
|
||||
ktElement: KtElement? = null
|
||||
) = Entity(
|
||||
name = "TestEntity",
|
||||
className = "",
|
||||
signature = "TestEntitySignature",
|
||||
location = createLocation(
|
||||
file = file,
|
||||
source = SourceLocation(position.first, position.second),
|
||||
text = TextLocation(text.first, text.last)
|
||||
),
|
||||
ktElement = ktElement
|
||||
)
|
||||
|
||||
fun createLocation(
|
||||
file: String,
|
||||
source: SourceLocation = SourceLocation(1, 1),
|
||||
text: TextLocation = TextLocation(0, 0),
|
||||
locationString: String = ""
|
||||
) = Location(
|
||||
source = source,
|
||||
text = text,
|
||||
locationString = locationString,
|
||||
file = file
|
||||
)
|
||||
|
||||
fun createNotification() = ModificationNotification(Paths.get(resource("empty.txt")))
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.console
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.ConsoleReport
|
||||
import io.gitlab.arturbosch.detekt.cli.createCorrectableFinding
|
||||
import io.gitlab.arturbosch.detekt.test.TestConfig
|
||||
import io.gitlab.arturbosch.detekt.test.TestDetektion
|
||||
import io.gitlab.arturbosch.detekt.test.createCorrectableFinding
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
|
||||
internal object AutoCorrectableIssueAssert {
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.console
|
||||
|
||||
import io.github.detekt.metrics.CognitiveComplexity
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.cli.createFinding
|
||||
import io.gitlab.arturbosch.detekt.core.DetektResult
|
||||
import io.github.detekt.metrics.processors.commentLinesKey
|
||||
import io.github.detekt.metrics.processors.complexityKey
|
||||
import io.github.detekt.metrics.processors.linesKey
|
||||
import io.github.detekt.metrics.processors.logicalLinesKey
|
||||
import io.github.detekt.metrics.processors.sourceLinesKey
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.core.DetektResult
|
||||
import io.gitlab.arturbosch.detekt.test.createFinding
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.spekframework.spek2.Spek
|
||||
import org.spekframework.spek2.style.specification.describe
|
||||
|
||||
@@ -2,8 +2,8 @@ package io.gitlab.arturbosch.detekt.cli.console
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
import io.gitlab.arturbosch.detekt.cli.createFinding
|
||||
import io.gitlab.arturbosch.detekt.test.TestDetektion
|
||||
import io.gitlab.arturbosch.detekt.test.createFinding
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.spekframework.spek2.Spek
|
||||
import org.spekframework.spek2.style.specification.describe
|
||||
|
||||
@@ -2,8 +2,8 @@ package io.gitlab.arturbosch.detekt.cli.console
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
import io.gitlab.arturbosch.detekt.cli.createFinding
|
||||
import io.gitlab.arturbosch.detekt.test.TestDetektion
|
||||
import io.gitlab.arturbosch.detekt.test.createFinding
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.spekframework.spek2.Spek
|
||||
import org.spekframework.spek2.style.specification.describe
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
|
||||
import io.github.detekt.report.html.HtmlOutputReport
|
||||
import io.github.detekt.report.txt.TxtOutputReport
|
||||
import io.github.detekt.report.xml.XmlOutputReport
|
||||
import io.github.detekt.test.utils.NullPrintStream
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.api.OutputReport
|
||||
|
||||
@@ -3,6 +3,9 @@ package io.gitlab.arturbosch.detekt.core
|
||||
import io.github.detekt.psi.absolutePath
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSetId
|
||||
import io.gitlab.arturbosch.detekt.api.internal.whichDetekt
|
||||
import io.gitlab.arturbosch.detekt.api.internal.whichJava
|
||||
import io.gitlab.arturbosch.detekt.api.internal.whichOS
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import java.io.PrintStream
|
||||
import java.nio.file.Files
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
dependencies {
|
||||
api(project(":detekt-api"))
|
||||
testImplementation(project(":detekt-test-utils"))
|
||||
testImplementation(project(":detekt-test"))
|
||||
}
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.console
|
||||
package io.github.detekt.metrics
|
||||
|
||||
import io.github.detekt.metrics.CognitiveComplexity
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.github.detekt.metrics.processors.commentLinesKey
|
||||
import io.github.detekt.metrics.processors.complexityKey
|
||||
import io.github.detekt.metrics.processors.linesKey
|
||||
import io.github.detekt.metrics.processors.logicalLinesKey
|
||||
import io.github.detekt.metrics.processors.sourceLinesKey
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
|
||||
class ComplexityMetric(detektion: Detektion) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.console
|
||||
package io.github.detekt.metrics
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import java.util.Locale
|
||||
@@ -1,14 +1,15 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.console
|
||||
package io.github.detekt.metrics
|
||||
|
||||
import io.github.detekt.metrics.CognitiveComplexity
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.cli.createFinding
|
||||
import io.github.detekt.metrics.processors.commentLinesKey
|
||||
import io.github.detekt.metrics.processors.complexityKey
|
||||
import io.github.detekt.metrics.processors.linesKey
|
||||
import io.github.detekt.metrics.processors.logicalLinesKey
|
||||
import io.github.detekt.metrics.processors.sourceLinesKey
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
import io.gitlab.arturbosch.detekt.test.TestDetektion
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.spekframework.spek2.Spek
|
||||
import org.spekframework.spek2.style.specification.describe
|
||||
@@ -20,7 +21,9 @@ internal class ComplexityReportGeneratorSpec : Spek({
|
||||
lateinit var detektion: TestDetektion
|
||||
|
||||
beforeEachTest {
|
||||
detektion = TestDetektion(createFinding())
|
||||
val finding = mockk<Finding>()
|
||||
every { finding.id }.returns("test")
|
||||
detektion = TestDetektion(finding)
|
||||
addData(detektion)
|
||||
}
|
||||
|
||||
9
detekt-report-html/build.gradle.kts
Normal file
9
detekt-report-html/build.gradle.kts
Normal file
@@ -0,0 +1,9 @@
|
||||
dependencies {
|
||||
compileOnly(project(":detekt-api"))
|
||||
compileOnly(project(":detekt-metrics"))
|
||||
implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:${Versions.KOTLINX_HTML}") {
|
||||
exclude(group = "org.jetbrains.kotlin")
|
||||
}
|
||||
testImplementation(project(":detekt-metrics"))
|
||||
testImplementation(project(":detekt-test"))
|
||||
}
|
||||
@@ -1,13 +1,12 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.html
|
||||
|
||||
import io.github.detekt.metrics.ComplexityReportGenerator
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
import io.gitlab.arturbosch.detekt.api.OutputReport
|
||||
import io.gitlab.arturbosch.detekt.api.ProjectMetric
|
||||
import io.gitlab.arturbosch.detekt.api.TextLocation
|
||||
import io.gitlab.arturbosch.detekt.cli.ClasspathResourceConverter
|
||||
import io.gitlab.arturbosch.detekt.cli.console.ComplexityReportGenerator
|
||||
import io.gitlab.arturbosch.detekt.core.whichDetekt
|
||||
import io.gitlab.arturbosch.detekt.api.internal.whichDetekt
|
||||
import kotlinx.html.CommonAttributeGroupFacadeFlowInteractiveContent
|
||||
import kotlinx.html.FlowContent
|
||||
import kotlinx.html.FlowOrInteractiveContent
|
||||
@@ -46,7 +45,10 @@ class HtmlOutputReport : OutputReport() {
|
||||
override val name = "HTML report"
|
||||
|
||||
override fun render(detektion: Detektion) =
|
||||
ClasspathResourceConverter().convert(DEFAULT_TEMPLATE).openStream().bufferedReader().use { it.readText() }
|
||||
javaClass.getResource("/$DEFAULT_TEMPLATE")
|
||||
.openStream()
|
||||
.bufferedReader()
|
||||
.use { it.readText() }
|
||||
.replace(PLACEHOLDER_VERSION, renderVersion())
|
||||
.replace(PLACEHOLDER_DATE, renderDate())
|
||||
.replace(PLACEHOLDER_METRICS, renderMetrics(detektion.metrics))
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.html
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.SourceLocation
|
||||
import io.gitlab.arturbosch.detekt.core.whichDetekt
|
||||
import io.gitlab.arturbosch.detekt.api.internal.whichDetekt
|
||||
import kotlinx.html.FlowContent
|
||||
import kotlinx.html.a
|
||||
import kotlinx.html.code
|
||||
@@ -0,0 +1 @@
|
||||
io.github.detekt.report.html.HtmlOutputReport
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.html
|
||||
|
||||
import io.github.detekt.metrics.CognitiveComplexity
|
||||
import io.github.detekt.metrics.processors.commentLinesKey
|
||||
@@ -11,11 +11,11 @@ import io.github.detekt.test.utils.resourceAsPath
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
import io.gitlab.arturbosch.detekt.api.ProjectMetric
|
||||
import io.gitlab.arturbosch.detekt.cli.createEntity
|
||||
import io.gitlab.arturbosch.detekt.cli.createFinding
|
||||
import io.gitlab.arturbosch.detekt.cli.createIssue
|
||||
import io.gitlab.arturbosch.detekt.core.whichDetekt
|
||||
import io.gitlab.arturbosch.detekt.api.internal.whichDetekt
|
||||
import io.gitlab.arturbosch.detekt.test.TestDetektion
|
||||
import io.gitlab.arturbosch.detekt.test.createEntity
|
||||
import io.gitlab.arturbosch.detekt.test.createFinding
|
||||
import io.gitlab.arturbosch.detekt.test.createIssue
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
@@ -132,7 +132,7 @@ class HtmlOutputReportSpec : Spek({
|
||||
}
|
||||
|
||||
it("asserts that the generated HTML is the same as expected") {
|
||||
val expected = resourceAsPath("/reports/HtmlOutputFormatTest.html")
|
||||
val expected = resourceAsPath("HtmlOutputFormatTest.html")
|
||||
var result = htmlReport.render(createTestDetektionWithMultipleSmells())
|
||||
result = generatedRegex.replace(result, replacement)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.html
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.SourceLocation
|
||||
import kotlinx.html.div
|
||||
@@ -0,0 +1 @@
|
||||
DetektVersion: 1.9.1
|
||||
4
detekt-report-txt/build.gradle.kts
Normal file
4
detekt-report-txt/build.gradle.kts
Normal file
@@ -0,0 +1,4 @@
|
||||
dependencies {
|
||||
implementation(project(":detekt-api"))
|
||||
testImplementation(project(":detekt-test"))
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.txt
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.api.OutputReport
|
||||
@@ -0,0 +1 @@
|
||||
io.github.detekt.report.txt.TxtOutputReport
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.txt
|
||||
|
||||
import io.gitlab.arturbosch.detekt.test.TestDetektion
|
||||
import io.gitlab.arturbosch.detekt.cli.createFinding
|
||||
import io.gitlab.arturbosch.detekt.test.createFinding
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.spekframework.spek2.Spek
|
||||
import org.spekframework.spek2.style.specification.describe
|
||||
4
detekt-report-xml/build.gradle.kts
Normal file
4
detekt-report-xml/build.gradle.kts
Normal file
@@ -0,0 +1,4 @@
|
||||
dependencies {
|
||||
implementation(project(":detekt-api"))
|
||||
testImplementation(project(":detekt-test"))
|
||||
}
|
||||
@@ -19,7 +19,7 @@
|
||||
*/
|
||||
@file:Suppress("ALL")
|
||||
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.xml
|
||||
|
||||
import java.util.ArrayList
|
||||
import java.util.Arrays
|
||||
@@ -1,4 +1,4 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
package io.github.detekt.report.xml
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Detektion
|
||||
import io.gitlab.arturbosch.detekt.api.Finding
|
||||
@@ -21,7 +21,7 @@ class XmlOutputReport : OutputReport() {
|
||||
lines += "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
|
||||
lines += "<checkstyle version=\"4.3\">"
|
||||
|
||||
smells.groupBy { it.location.file }.forEach { fileName, findings ->
|
||||
smells.groupBy { it.location.file }.forEach { (fileName, findings) ->
|
||||
lines += "<file name=\"${fileName.toXmlString()}\">"
|
||||
findings.forEach {
|
||||
lines += arrayOf(
|
||||
@@ -0,0 +1 @@
|
||||
io.github.detekt.report.xml.XmlOutputReport
|
||||
@@ -1,4 +1,6 @@
|
||||
package io.gitlab.arturbosch.detekt.cli.out
|
||||
@file:Suppress("MaxLineLength")
|
||||
|
||||
package io.github.detekt.report.xml
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Debt
|
||||
@@ -0,0 +1,64 @@
|
||||
package io.gitlab.arturbosch.detekt.test
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.CorrectableCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Debt
|
||||
import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Location
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.SourceLocation
|
||||
import io.gitlab.arturbosch.detekt.api.TextLocation
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
|
||||
fun createFinding(ruleName: String = "TestSmell", fileName: String = "TestFile.kt") =
|
||||
CodeSmell(createIssue(ruleName), createEntity(fileName), "TestMessage")
|
||||
|
||||
fun createCorrectableFinding(ruleName: String = "TestSmell", fileName: String = "TestFile.kt") =
|
||||
CorrectableCodeSmell(createIssue(ruleName), createEntity(fileName), "TestMessage", autoCorrectEnabled = true)
|
||||
|
||||
fun createFinding(
|
||||
issue: Issue,
|
||||
entity: Entity,
|
||||
message: String = entity.signature
|
||||
) = CodeSmell(
|
||||
issue = issue,
|
||||
entity = entity,
|
||||
message = message
|
||||
)
|
||||
|
||||
fun createIssue(id: String) = Issue(
|
||||
id = id,
|
||||
severity = Severity.CodeSmell,
|
||||
description = "Description $id",
|
||||
debt = Debt.FIVE_MINS
|
||||
)
|
||||
|
||||
fun createEntity(
|
||||
file: String,
|
||||
position: Pair<Int, Int> = 1 to 1,
|
||||
text: IntRange = 0..0,
|
||||
ktElement: KtElement? = null
|
||||
) = Entity(
|
||||
name = "TestEntity",
|
||||
className = "",
|
||||
signature = "TestEntitySignature",
|
||||
location = createLocation(
|
||||
file = file,
|
||||
source = SourceLocation(position.first, position.second),
|
||||
text = TextLocation(text.first, text.last)
|
||||
),
|
||||
ktElement = ktElement
|
||||
)
|
||||
|
||||
fun createLocation(
|
||||
file: String,
|
||||
source: SourceLocation = SourceLocation(1, 1),
|
||||
text: TextLocation = TextLocation(0, 0),
|
||||
locationString: String = ""
|
||||
) = Location(
|
||||
source = source,
|
||||
text = text,
|
||||
locationString = locationString,
|
||||
file = file
|
||||
)
|
||||
@@ -34,4 +34,7 @@ title: io.gitlab.arturbosch.detekt.api.internal - detekt-api
|
||||
| [createPathFilters](create-path-filters.html) | `fun `[`Config`](../io.gitlab.arturbosch.detekt.api/-config/index.html)`.createPathFilters(): `[`PathFilters`](-path-filters/index.html)`?` |
|
||||
| [pathMatcher](path-matcher.html) | Converts given [pattern](path-matcher.html#io.gitlab.arturbosch.detekt.api.internal$pathMatcher(kotlin.String)/pattern) into a [PathMatcher](https://docs.oracle.com/javase/8/docs/api/java/nio/file/PathMatcher.html) specified by [FileSystem.getPathMatcher](https://docs.oracle.com/javase/8/docs/api/java/nio/file/FileSystem.html#getPathMatcher(java.lang.String)). We only support the "glob:" syntax to stay os independently. Internally a globbing pattern is transformed to a regex respecting the Windows file system.`fun pathMatcher(pattern: `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`): `[`PathMatcher`](https://docs.oracle.com/javase/8/docs/api/java/nio/file/PathMatcher.html) |
|
||||
| [validateConfig](validate-config.html) | `fun validateConfig(config: `[`Config`](../io.gitlab.arturbosch.detekt.api/-config/index.html)`, baseline: `[`Config`](../io.gitlab.arturbosch.detekt.api/-config/index.html)`, excludePatterns: `[`Set`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-set/index.html)`<`[`Regex`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.text/-regex/index.html)`> = CommaSeparatedPattern(DEFAULT_PROPERTY_EXCLUDES).mapToRegex()): `[`List`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html)`<`[`Notification`](../io.gitlab.arturbosch.detekt.api/-notification/index.html)`>` |
|
||||
| [whichDetekt](which-detekt.html) | Returns the bundled detekt version.`fun whichDetekt(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`?` |
|
||||
| [whichJava](which-java.html) | Returns the version of the running JVM.`fun whichJava(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) |
|
||||
| [whichOS](which-o-s.html) | Returns the name of the running OS.`fun whichOS(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html) |
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: whichDetekt - detekt-api
|
||||
---
|
||||
|
||||
[detekt-api](../index.html) / [io.gitlab.arturbosch.detekt.api.internal](index.html) / [whichDetekt](./which-detekt.html)
|
||||
|
||||
# whichDetekt
|
||||
|
||||
`fun whichDetekt(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)`?`
|
||||
|
||||
Returns the bundled detekt version.
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: whichJava - detekt-api
|
||||
---
|
||||
|
||||
[detekt-api](../index.html) / [io.gitlab.arturbosch.detekt.api.internal](index.html) / [whichJava](./which-java.html)
|
||||
|
||||
# whichJava
|
||||
|
||||
`fun whichJava(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)
|
||||
|
||||
Returns the version of the running JVM.
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: whichOS - detekt-api
|
||||
---
|
||||
|
||||
[detekt-api](../index.html) / [io.gitlab.arturbosch.detekt.api.internal](index.html) / [whichOS](./which-o-s.html)
|
||||
|
||||
# whichOS
|
||||
|
||||
`fun whichOS(): `[`String`](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html)
|
||||
|
||||
Returns the name of the running OS.
|
||||
|
||||
@@ -9,6 +9,9 @@ include(
|
||||
"detekt-metrics",
|
||||
"detekt-parser",
|
||||
"detekt-psi-utils",
|
||||
"detekt-report-html",
|
||||
"detekt-report-txt",
|
||||
"detekt-report-xml",
|
||||
"detekt-rules",
|
||||
"detekt-sample-extensions",
|
||||
"detekt-test",
|
||||
|
||||
Reference in New Issue
Block a user