Skip to content

Commit

Permalink
[WIP] Add config generator for custom rules
Browse files Browse the repository at this point in the history
  • Loading branch information
VitalyVPinchuk committed Jul 25, 2022
1 parent d017c47 commit 21e49b6
Show file tree
Hide file tree
Showing 166 changed files with 3,569 additions and 817 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'

- name: Generate Coverage Report
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # tag=v2
with:
arguments: jacocoMergedReport

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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'

- name: Build detekt
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # tag=v2
with:
arguments: build

- name: Deploy Snapshot
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'

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

- name: Upload SARIF to Github using the upload-sarif action
uses: github/codeql-action/upload-sarif@3f62b754e23e0dd60f91b744033e1dc1654c0ec6 # tag=v2
uses: github/codeql-action/upload-sarif@3e7e3b32d0fb8283594bb0a76cc60a00918b0969 # 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Run analysis
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: ${{ matrix.jdk }}
distribution: 'temurin'
- name: Build detekt
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # 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@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # tag=v2
with:
arguments: :detekt-cli:runWithHelpFlag
- name: Run detekt-cli with argsfile
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # tag=v2
with:
arguments: :detekt-cli:runWithArgsFile
- name: Try to publish to Maven Local
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Verify Generated Detekt Config File
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Build and compile test snippets
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'
- name: Run with allWarningsAsErrors
uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 # tag=v2
uses: gradle/gradle-build-action@cd3cedc781988c804f626f4cd2dc51d0bdf02a12 # tag=v2
with:
arguments: build -x detekt -PwarningsAsErrors=true
8 changes: 4 additions & 4 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@16cca5479d7c6b6843f6a6515640ba33c6501543 # tag=v3
uses: actions/setup-java@2c7a4878f5d120bd643426d54ae1209b29cc01a3 # tag=v3
with:
java-version: 17
distribution: 'temurin'

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

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

Expand All @@ -49,7 +49,7 @@ jobs:
run: yarn build

- name: Deploy Github Pages (only on main)
uses: JamesIves/github-pages-deploy-action@e6d003d0839927f5a4b998bfd92ed8e448fde37a # tag=v4
uses: JamesIves/github-pages-deploy-action@13046b614c663b56cba4dda3f30b9736a748b80d # tag=v4
if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }}
with:
branch: gh-pages
Expand Down
6 changes: 3 additions & 3 deletions README.md
Expand Up @@ -3,7 +3,7 @@
[![Join the chat at #detekt on KotlinLang](https://img.shields.io/badge/%23detekt-on_slack-red.svg?logo=slack)](https://kotlinlang.slack.com/archives/C88E12QH4)
[![Visit the website at detekt.dev/](https://img.shields.io/badge/visit-website-red.svg?logo=firefox)](https://detekt.dev/)
[![Maven Central](https://img.shields.io/maven-central/v/io.gitlab.arturbosch.detekt/detekt-cli?label=MavenCentral&logo=apache-maven)](https://search.maven.org/artifact/io.gitlab.arturbosch.detekt/detekt-cli)
[![Gradle Plugin](https://img.shields.io/maven-metadata/v/https/plugins.gradle.org/m2/io/gitlab/arturbosch/detekt/io.gitlab.arturbosch.detekt.gradle.plugin/maven-metadata.xml.svg?label=Gradle&logo=gradle)](https://plugins.gradle.org/plugin/io.gitlab.arturbosch.detekt)
[![Gradle Plugin](https://img.shields.io/maven-central/v/io.gitlab.arturbosch.detekt/detekt-gradle-plugin?label=Gradle&logo=gradle)](https://plugins.gradle.org/plugin/io.gitlab.arturbosch.detekt)
[![Revved up by Gradle Enterprise](https://img.shields.io/badge/Revved%20up%20by-Gradle%20Enterprise-06A0CE?logo=Gradle&labelColor=02303A)](https://ge.detekt.dev/scans)

![Pre Merge Checks](https://github.com/detekt/detekt/workflows/Pre%20Merge%20Checks/badge.svg?branch=main)
Expand Down Expand Up @@ -106,11 +106,11 @@ If you want to use a SNAPSHOT version, you can find more info on [this documenta

#### Requirements

Gradle 6.1+ is the minimum requirement. However, the recommended versions together with the other tools recommended versions are:
Gradle 6.7.1+ is the minimum requirement. However, the recommended versions together with the other tools recommended versions are:

| Detekt Version | Gradle | Kotlin | AGP | Java Target Level | JDK Max Version |
| -------------- | ------- | -------- | ------- | ----------------- | --------------- |
| `1.20.0` | `7.4.2` | `1.6.20` | `7.1.3` | `1.8` | `17` |
| `1.21.0` | `7.5` | `1.6.21` | `7.2.1` | `1.8` | `17` |

The list of [recommended versions for previous detekt version is listed here](https://detekt.dev/compatibility.html).

Expand Down
2 changes: 1 addition & 1 deletion build-logic/src/main/kotlin/Versions.kt
@@ -1,6 +1,6 @@
object Versions {

const val DETEKT: String = "1.21.0-RC2"
const val DETEKT: String = "1.21.0"
const val SNAPSHOT_NAME: String = "main"
const val JVM_TARGET: String = "1.8"

Expand Down
1 change: 0 additions & 1 deletion build-logic/src/main/kotlin/module.gradle.kts
Expand Up @@ -55,7 +55,6 @@ tasks.withType<KotlinCompile>().configureEach {
freeCompilerArgs = listOf(
"-progressive",
"-Xsuppress-version-warnings",
"-opt-in=kotlin.RequiresOptIn"
)
// Note: Currently there are warnings for detekt-gradle-plugin that seemingly can't be fixed
// until Gradle releases an update (https://github.com/gradle/gradle/issues/16345)
Expand Down
3 changes: 2 additions & 1 deletion code-coverage-report/build.gradle.kts
Expand Up @@ -51,7 +51,8 @@ tasks.check {
configurations.allCodeCoverageReportClassDirectories.get().attributes {
attributes.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category::class, Category.LIBRARY))
attributes.attribute(
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements::class, LibraryElements.CLASSES)
LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE,
objects.named(LibraryElements::class, LibraryElements.CLASSES)
)
}

Expand Down
81 changes: 81 additions & 0 deletions config/detekt/custom-rules-config.yml
@@ -0,0 +1,81 @@
complexity:
active: true
ComplexCondition:
active: true
threshold: 4
ComplexInterface:
active: false
threshold: 10
includeStaticDeclarations: false
includePrivateDeclarations: false
ComplexMethod:
active: true
threshold: 15
ignoreSingleWhenExpression: false
ignoreSimpleWhenEntries: false
ignoreNestingFunctions: false
nestingFunctions:
- 'also'
- 'apply'
- 'forEach'
- 'isNotNull'
- 'ifNull'
- 'let'
- 'run'
- 'use'
- 'with'
LabeledExpression:
active: false
ignoredLabels: []
LargeClass:
active: true
threshold: 600
LongMethod:
active: true
threshold: 60
LongParameterList:
active: true
functionThreshold: 6
constructorThreshold: 7
ignoreDefaultParameters: false
ignoreDataClasses: true
ignoreAnnotatedParameter: []
MethodOverloading:
active: false
threshold: 6
NamedArguments:
active: false
threshold: 3
ignoreArgumentsMatchingNames: false
NestedBlockDepth:
active: true
threshold: 4
NestedScopeFunctions:
active: false
threshold: 1
functions:
- 'kotlin.apply'
- 'kotlin.run'
- 'kotlin.with'
- 'kotlin.let'
- 'kotlin.also'
ReplaceSafeCallChainWithRun:
active: false
StringLiteralDuplication:
active: false
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
threshold: 3
ignoreAnnotation: true
excludeStringsWithLessThan5Characters: true
ignoreStringsRegex: '$^'
TooManyFunctions:
active: true
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/jsTest/**', '**/iosTest/**']
thresholdInFiles: 11
thresholdInClasses: 11
thresholdInInterfaces: 11
thresholdInObjects: 11
thresholdInEnums: 11
ignoreDeprecated: false
ignorePrivate: false
ignoreOverridden: false

0 comments on commit 21e49b6

Please sign in to comment.