Skip to content

Commit

Permalink
Merge branch 'main' into chao/kt47
Browse files Browse the repository at this point in the history
  • Loading branch information
chao2zhang committed Sep 30, 2022
2 parents a6d3a1f + 522994a commit 14d3f2b
Show file tree
Hide file tree
Showing 20 changed files with 82 additions and 45 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/codecoverage.yaml
Expand Up @@ -23,13 +23,13 @@ jobs:
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3

- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'

- name: Generate Coverage Report
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: jacocoMergedReport

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/danger.yaml
Expand Up @@ -24,7 +24,7 @@ jobs:
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3

- name: Setup Node
uses: actions/setup-node@2fddd8803e2f5c9604345a0b591c3020ee971a93 # tag=v3
uses: actions/setup-node@969bd2663942d722d85b6a8626225850c2f7be4b # tag=v3
with:
node-version: "16"
cache: "yarn"
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/deploy-snapshot.yaml
Expand Up @@ -20,18 +20,18 @@ jobs:
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3

- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'

- name: Build detekt
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: build

- name: Deploy Snapshot
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
env:
ORG_GRADLE_PROJECT_SIGNING_KEY: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_KEY }}
ORG_GRADLE_PROJECT_SIGNING_PWD: ${{ secrets.ORG_GRADLE_PROJECT_SIGNING_PWD }}
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/detekt-with-type-resolution.yaml
Expand Up @@ -28,18 +28,18 @@ jobs:
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3

- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'

- name: Run detekt-cli with argsfile
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: :detekt-cli:runWithArgsFile

- name: Upload SARIF to Github using the upload-sarif action
uses: github/codeql-action/upload-sarif@904260d7d935dff982205cbdb42025ce30b7a34f # tag=v2
uses: github/codeql-action/upload-sarif@e0e5ded33cabb451ae0a9768fc7b0410bad9ad44 # tag=v2
if: ${{ always() }}
with:
sarif_file: build/detekt-report.sarif
Expand All @@ -53,11 +53,11 @@ jobs:
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3

- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Run analysis
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: detektMain detektTest
22 changes: 11 additions & 11 deletions .github/workflows/pre-merge.yaml
Expand Up @@ -32,12 +32,12 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3
- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: ${{ matrix.jdk }}
distribution: 'temurin'
- name: Build detekt
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: build -x detekt
- uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # tag=v3
Expand All @@ -46,15 +46,15 @@ jobs:
path: '**.hprof'
if-no-files-found: ignore
- name: Run detekt-cli --help
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: :detekt-cli:runWithHelpFlag
- name: Run detekt-cli with argsfile
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: :detekt-cli:runWithArgsFile
- name: Try to publish to Maven Local
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: publishToMavenLocal

Expand All @@ -65,12 +65,12 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3
- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Verify Generated Detekt Config File
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: verifyGeneratorOutput

Expand All @@ -81,12 +81,12 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3
- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Build and compile test snippets
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: test -Pcompile-test-snippets=true

Expand All @@ -97,11 +97,11 @@ jobs:
- name: Checkout Repo
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3
- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Run with allWarningsAsErrors
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: build -x detekt -PwarningsAsErrors=true
6 changes: 3 additions & 3 deletions .github/workflows/website.yaml
Expand Up @@ -23,20 +23,20 @@ jobs:
uses: actions/checkout@2541b1294d2704b0964813337f33b291d3f8596b # tag=v3

- name: Setup Java
uses: actions/setup-java@d854b6da19cdadd9a010605529e522c2393ebd38 # tag=v3
uses: actions/setup-java@a18c333f3f14249953dab3e186e5e21bf3390f1d # tag=v3
with:
java-version: 17
distribution: 'temurin'

- name: Setup Node
uses: actions/setup-node@2fddd8803e2f5c9604345a0b591c3020ee971a93 # tag=v3
uses: actions/setup-node@969bd2663942d722d85b6a8626225850c2f7be4b # tag=v3
with:
node-version: '16'
cache: 'yarn'
cache-dependency-path: 'website/yarn.lock'

- name: Build Detekt Documentation
uses: gradle/gradle-build-action@c295a4096e1d2c453eaf1f65c6f96686e26bd8be # tag=v2
uses: gradle/gradle-build-action@fd32ae908111fe31afa48827bd1ee909540aa971 # tag=v2
with:
arguments: :detekt-generator:generateDocumentation

Expand Down
Expand Up @@ -57,7 +57,7 @@ open class SplitPattern(
}

/**
* Splits given String into a sequence of strings splited by the provided delimiters ("," by default).
* Splits given String into a sequence of strings split by the provided delimiters ("," by default).
*
* It also trims the strings and removes the empty ones
*/
Expand Down
Expand Up @@ -13,6 +13,7 @@ import org.assertj.core.api.Assertions.assertThatThrownBy
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Nested
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertDoesNotThrow
import java.nio.file.Files
import java.nio.file.Path

Expand Down Expand Up @@ -299,4 +300,19 @@ class RunnerSpec {
executeDetekt("--input", inputPath.toString(), "--max-issues", "2")
}
}

@Test
fun `does not fail on rule property type change from comma separated string to list when YamlConfig is wrapped`() {
assertDoesNotThrow {
executeDetekt(
"--all-rules", // wrapping config
"--input",
inputPath.toString(),
"--config-resource",
"configs/return-count-with-string-property.yml",
"--max-issues",
"-1"
)
}
}
}
@@ -0,0 +1,4 @@
style:
ReturnCount:
active: true
excludedFunctions: 'test'
Expand Up @@ -43,7 +43,6 @@ internal class Analyzer(
): Map<RuleSetId, List<Finding>> {
val languageVersionSettings = settings.environment.configuration.languageVersionSettings

@Suppress("DEPRECATION")
val dataFlowValueFactory = DataFlowValueFactoryImpl(languageVersionSettings)
val compilerResources = CompilerResources(languageVersionSettings, dataFlowValueFactory)
val findingsPerFile: FindingsResult =
Expand All @@ -52,8 +51,9 @@ internal class Analyzer(
} else {
runSync(ktFiles, bindingContext, compilerResources)
}

if (bindingContext == BindingContext.EMPTY) {
warnAboutEnabledRequiresTypeResolutionRules(settings::info)
warnAboutEnabledRequiresTypeResolutionRules()
}

val findingsPerRuleSet = HashMap<RuleSetId, List<Finding>>()
Expand Down Expand Up @@ -144,7 +144,7 @@ internal class Analyzer(
return result
}

private fun warnAboutEnabledRequiresTypeResolutionRules(log: (String) -> Unit) {
private fun warnAboutEnabledRequiresTypeResolutionRules() {
providers.asSequence()
.map { it to config.subConfig(it.ruleSetId) }
.filter { (_, ruleSetConfig) -> ruleSetConfig.isActive() }
Expand All @@ -153,7 +153,7 @@ internal class Analyzer(
.filter { rule -> (rule as? Rule)?.active == true }
.filter { rule -> rule::class.hasAnnotation<RequiresTypeResolution>() }
.forEach { rule ->
log("The rule '${rule.ruleId}' requires type resolution but it was run without it.")
settings.debug { "The rule '${rule.ruleId}' requires type resolution but it was run without it." }
}
}
}
Expand Down
Expand Up @@ -2,6 +2,7 @@ package io.gitlab.arturbosch.detekt.core.config

import io.gitlab.arturbosch.detekt.api.Config
import io.gitlab.arturbosch.detekt.api.Config.Companion.CONFIG_SEPARATOR
import io.gitlab.arturbosch.detekt.api.commaSeparatedPattern

private val ALLOWED_BOOL_VALUES = setOf("true", "false")

Expand Down Expand Up @@ -48,5 +49,6 @@ fun tryParseBasedOnDefault(result: String, defaultResult: Any): Any = when (defa
}
is Double -> result.toDouble()
is String -> result
is List<*> -> result.commaSeparatedPattern().toList()
else -> throw ClassCastException()
}
Expand Up @@ -27,6 +27,7 @@ fun createProcessingSettings(
inputPaths = listOfNotNull(inputPath)
}
logging {
debug = true
this.outputChannel = outputChannel
errorChannel = NullPrintStream()
}
Expand Down
Expand Up @@ -76,10 +76,10 @@ class LabeledExpression(config: Config = Config.empty) : Rule(config) {
override fun visitExpressionWithLabel(expression: KtExpressionWithLabel) {
super.visitExpressionWithLabel(expression)
if (expression !is KtThisExpression || isNotReferencingOuterClass(expression)) {
expression.getLabelName()?.let { labelName ->
if (ignoredLabels.none { labelName.contains(it, ignoreCase = true) }) {
report(CodeSmell(issue, Entity.from(expression), issue.description))
}
val label = expression.getTargetLabel()
val labelName = label?.getReferencedName()
if (labelName != null && ignoredLabels.none { labelName.contains(it, ignoreCase = true) }) {
report(CodeSmell(issue, Entity.from(label), issue.description))
}
}
}
Expand Down
@@ -1,8 +1,8 @@
package io.gitlab.arturbosch.detekt.rules.complexity

import io.gitlab.arturbosch.detekt.test.TestConfig
import io.gitlab.arturbosch.detekt.test.assertThat
import io.gitlab.arturbosch.detekt.test.compileAndLint
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test

class LabeledExpressionSpec {
Expand Down Expand Up @@ -34,7 +34,11 @@ class LabeledExpressionSpec {
}
}
""".trimIndent()
assertThat(subject.compileAndLint(code)).hasSize(1)

val findings = subject.compileAndLint(code)

assertThat(findings).hasSize(1)
assertThat(findings).hasStartSourceLocation(3, 28)
}

@Test
Expand Down
Expand Up @@ -47,6 +47,6 @@ class CastToNullableType(config: Config = Config.empty) : Rule(config) {

val message = "Use the safe cast ('as? ${nullableTypeElement.innerType?.text}')" +
" instead of 'as ${nullableTypeElement.text}'."
report(CodeSmell(issue, Entity.from(expression), message))
report(CodeSmell(issue, Entity.from(operationReference), message))
}
}
Expand Up @@ -16,7 +16,7 @@ class CastToNullableTypeSpec {
""".trimIndent()
val findings = subject.compileAndLint(code)
assertThat(findings).hasSize(1)
assertThat(findings).hasStartSourceLocation(2, 22)
assertThat(findings).hasStartSourceLocation(2, 24)
assertThat(findings[0]).hasMessage("Use the safe cast ('as? String') instead of 'as String?'.")
}

Expand Down
Expand Up @@ -102,7 +102,7 @@ class UseDataClass(config: Config = Config.empty) : Rule(config) {
report(
CodeSmell(
issue,
Entity.from(klass),
Entity.from(klass.nameIdentifier ?: klass),
"The class ${klass.nameAsSafeName} defines no " +
"functionality and only holds data. Consider converting it to a data class."
)
Expand Down
Expand Up @@ -153,11 +153,16 @@ class UseDataClassSpec(val env: KotlinCoreEnvironment) {
inner class `does report data class candidates` {

@Test
fun `does report a data class candidate`() {
fun `does report a data class candidate on the class name`() {
val code = """
class DataClassCandidate1(val i: Int)
""".trimIndent()
assertThat(subject.compileAndLint(code)).hasSize(1)

val findings = subject.compileAndLint(code)

assertThat(findings).hasSize(1)
assertThat(findings).hasStartSourceLocation(1, 7)
assertThat(findings).hasEndSourceLocation(1, 26)
}

@Test
Expand Down
6 changes: 3 additions & 3 deletions gradle/libs.versions.toml
@@ -1,7 +1,7 @@
[versions]
dokka = "1.7.10"
jacoco = "0.8.8"
kotlin = "1.7.10"
kotlin = "1.7.20"
ktlint = "0.47.1"
junit = "5.9.1"
contester = "0.2.0"
Expand Down Expand Up @@ -36,8 +36,8 @@ junit-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "jun
sarif4k = "io.github.detekt.sarif4k:sarif4k:0.0.1"
assertj = "org.assertj:assertj-core:3.23.1"
reflections = "org.reflections:reflections:0.10.2"
mockk = "io.mockk:mockk:1.13.1"
snakeyaml = "org.yaml:snakeyaml:1.32"
mockk = "io.mockk:mockk:1.13.2"
snakeyaml = "org.yaml:snakeyaml:1.33"
jcommander = "com.beust:jcommander:1.82"
contester-breakpoint = { module = "io.github.davidburstrom.contester:contester-breakpoint", version.ref = "contester" }
contester-driver = { module = "io.github.davidburstrom.contester:contester-driver", version.ref = "contester" }
Expand Down

0 comments on commit 14d3f2b

Please sign in to comment.