Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
40 changed files
with
10,253 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
--- | ||
title: "Run detekt using the Compiler Plugin" | ||
keywords: [detekt, static, analysis, code, kotlin] | ||
sidebar: | ||
permalink: compilerplugin.html | ||
folder: gettingstarted | ||
summary: | ||
sidebar_position: 7 | ||
--- | ||
|
||
You can integrate detekt in your project using the Detekt Compiler Plugin instead of the classic [Detekt Gradle Plugin](/docs/gettingstarted/gradle). Detekt offers a compiler plugin for K1 which allows you to run detekt as part of the Kotlin compilation process. This allows you to run detekt on your code without having separate tasks to invoke and results in much faster execution of detekt, especially if you're using [type resolution](/docs/gettingstarted/type-resolution). | ||
|
||
:::caution | ||
|
||
Please note that Detekt Compiler Plugin is an **experimental extension** of detekt. We expect it to be stable with the upcoming release of detekt (2.x) | ||
|
||
::: | ||
|
||
## Using the Compiler Plugin | ||
|
||
To use the detekt Compiler Plugin, you will have to add the following Gradle Plugin: | ||
|
||
```kotlin | ||
plugins { | ||
id("io.github.detekt.gradle.compiler-plugin") version "[detekt_version]" | ||
} | ||
``` | ||
|
||
## Configuring the Compiler Plugin | ||
|
||
The compiler plugin can be configured using the `react{}` block in your gradle file. | ||
|
||
The following options are allowed: | ||
|
||
```kotlin | ||
detekt { | ||
// Define the detekt configuration(s) you want to use. | ||
// Defaults to the default detekt configuration. | ||
config.setFrom("path/to/config.yml") | ||
|
||
// Applies the config files on top of detekt's default config file. `false` by default. | ||
buildUponDefaultConfig = false | ||
|
||
// Turns on all the rules. `false` by default. | ||
allRules = false | ||
|
||
// Specifying a baseline file. All findings stored in this file in subsequent runs of detekt. | ||
baseline = file("path/to/baseline.xml") | ||
|
||
// Disables all default detekt rulesets and will only run detekt with custom rules | ||
// defined in plugins passed in with `detektPlugins` configuration. `false` by default. | ||
disableDefaultRuleSets = false | ||
|
||
// Adds debug output during task execution. `false` by default. | ||
debug = false | ||
|
||
// Kill switch to turn off the Compiler Plugin execution entirely. | ||
enableCompilerPlugin = true | ||
} | ||
``` | ||
|
||
Moreover, detekt reports can be configured at the Kotlin Compilation tasks level as follows | ||
|
||
```kotlin | ||
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { | ||
detekt { | ||
reports { | ||
xml.enabled.set(true) | ||
txt.enabled.set(false) | ||
create("custom") { | ||
enabled.set(false) | ||
} | ||
} | ||
} | ||
} | ||
``` | ||
|
||
## Adding third party plugins | ||
|
||
As for the Detekt Gradle Plugin, you can add third party plugins to the Compiler Plugin using the `detektPlugins` configuration. | ||
|
||
```kotlin | ||
dependencies { | ||
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[detekt_version]") | ||
} | ||
``` | ||
|
||
## Running the Compiler Plugin | ||
|
||
The compiler plugin will run during your `compileKotlin` tasks execution: | ||
|
||
```shell | ||
$ ./gradlew compileKotlin | ||
|
||
> Task :example:compileKotlin | ||
w: Analysis failed with 1 weighted issues. | ||
w: file:///.../example/src/main/java/Sample.kt:4:17 MagicNumber: This expression contains a magic number. Consider defining it to a well named constant. | ||
|
||
BUILD SUCCESSFUL in 1s | ||
5 actionable tasks: 1 executed, 4 up-to-date | ||
``` | ||
|
||
## Known Issues | ||
|
||
1. The rule `InvalidPackageDeckaration` is known to not be working well with the Compiler Plugin [#5747](https://github.com/detekt/detekt/issues/5747). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
4 changes: 4 additions & 0 deletions
4
website/versioned_docs/version-1.23.0/gettingstarted/_category_.json
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
{ | ||
"label": "Getting Started", | ||
"position": 3 | ||
} |
10 changes: 10 additions & 0 deletions
10
website/versioned_docs/version-1.23.0/gettingstarted/_cli-generator-options.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
``` | ||
Usage: java -jar detekt-generator-[detekt_version]-all.jar [options] | ||
Options: | ||
--generate-custom-rule-config, -gcrc | ||
Generate custom rules configuration files. The files will be | ||
placed under 'resources' folder of each rule respectively | ||
(e.g. 'custom-rule/src/main/resources/config/config.yml'). | ||
--input, -i | ||
Input paths to rules to analyze. Multiple paths are separated by comma. | ||
``` |
89 changes: 89 additions & 0 deletions
89
website/versioned_docs/version-1.23.0/gettingstarted/_cli-options.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
``` | ||
Usage: detekt [options] | ||
Options: | ||
--all-rules | ||
Activates all available (even unstable) rules. | ||
Default: false | ||
--auto-correct, -ac | ||
Allow rules to auto correct code if they support it. The default rule | ||
sets do NOT support auto correcting and won't change any line in the | ||
users code base. However custom rules can be written to support auto | ||
correcting. The additional 'formatting' rule set, added with | ||
'--plugins', does support it and needs this flag. | ||
Default: false | ||
--base-path, -bp | ||
Specifies a directory as the base path.Currently it impacts all file | ||
paths in the formatted reports. File paths in console output and txt | ||
report are not affected and remain as absolute paths. | ||
--baseline, -b | ||
If a baseline xml file is passed in, only new code smells not in the | ||
baseline are printed in the console. | ||
--build-upon-default-config | ||
Preconfigures detekt with a bunch of rules and some opinionated defaults | ||
for you. Allows additional provided configurations to override the | ||
defaults. | ||
Default: false | ||
--classpath, -cp | ||
EXPERIMENTAL: Paths where to find user class files and depending jar | ||
files. Used for type resolution. | ||
--config, -c | ||
Path to the config file (path/to/config.yml). Multiple configuration | ||
files can be specified with ',' or ';' as separator. | ||
--config-resource, -cr | ||
Path to the config resource on detekt's classpath (path/to/config.yml). | ||
--create-baseline, -cb | ||
Treats current analysis findings as a smell baseline for future detekt | ||
runs. | ||
Default: false | ||
--debug | ||
Prints extra information about configurations and extensions. | ||
Default: false | ||
--disable-default-rulesets, -dd | ||
Disables default rule sets. | ||
Default: false | ||
--excludes, -ex | ||
Globbing patterns describing paths to exclude from the analysis. | ||
--generate-config, -gc | ||
Export default config. Path can be specified with --config option | ||
(default path: default-detekt-config.yml) | ||
Default: false | ||
--help, -h | ||
Shows the usage. | ||
--includes, -in | ||
Globbing patterns describing paths to include in the analysis. Useful in | ||
combination with 'excludes' patterns. | ||
--input, -i | ||
Input paths to analyze. Multiple paths are separated by comma. If not | ||
specified the current working directory is used. | ||
--jdk-home | ||
EXPERIMENTAL: Use a custom JDK home directory to include into the | ||
classpath | ||
--jvm-target | ||
EXPERIMENTAL: Target version of the generated JVM bytecode that was | ||
generated during compilation and is now being used for type resolution | ||
(1.8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18 or 19) | ||
Default: 1.8 | ||
--language-version | ||
EXPERIMENTAL: Compatibility mode for Kotlin language version X.Y, | ||
reports errors for all language features that came out later | ||
Possible Values: [1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0] | ||
--max-issues | ||
Return exit code 0 only when found issues count does not exceed | ||
specified issues count. | ||
--parallel | ||
Enables parallel compilation and analysis of source files. Do some | ||
benchmarks first before enabling this flag. Heuristics show performance | ||
benefits starting from 2000 lines of Kotlin code. | ||
Default: false | ||
--plugins, -p | ||
Extra paths to plugin jars separated by ',' or ';'. | ||
--report, -r | ||
Generates a report for given 'report-id' and stores it on given 'path'. | ||
Entry should consist of: [report-id:path]. Available 'report-id' values: | ||
'txt', 'xml', 'html', 'md', 'sarif'. These can also be used in | ||
combination with each other e.g. '-r txt:reports/detekt.txt -r | ||
xml:reports/detekt.xml' | ||
--version | ||
Prints the detekt CLI version. | ||
Default: false | ||
``` |
69 changes: 69 additions & 0 deletions
69
website/versioned_docs/version-1.23.0/gettingstarted/cli.mdx
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
--- | ||
title: "Run detekt using Command Line Interface" | ||
keywords: [cli] | ||
sidebar: | ||
permalink: cli.html | ||
folder: gettingstarted | ||
summary: | ||
sidebar_position: 1 | ||
--- | ||
|
||
import CliOptions from "./_cli-options.md"; | ||
import CliGeneratorOptions from "./_cli-generator-options.md"; | ||
|
||
## Install the cli | ||
|
||
There are different ways to install the Command Line Interface (CLI): | ||
|
||
### MacOS, with [Homebrew](https://brew.sh/): | ||
|
||
```sh | ||
brew install detekt | ||
detekt [options] | ||
``` | ||
|
||
### Windows, with [Scoop](https://scoop.sh/) | ||
|
||
```powershell | ||
scoop install detekt | ||
detekt [options] | ||
``` | ||
|
||
### Any OS: | ||
|
||
```sh | ||
curl -sSLO https://github.com/detekt/detekt/releases/download/v[detekt_version]/detekt-cli-[detekt_version].zip | ||
unzip detekt-cli-[detekt_version].zip | ||
./detekt-cli-[detekt_version]/bin/detekt-cli --help | ||
``` | ||
|
||
### NixOS | ||
|
||
As a prerequisite, you have to add the unstable channel via `nix-channel` and then execute the following command. | ||
|
||
```sh | ||
nix-shell -I nixpkgs=channel:nixpkgs-unstable -p detekt | ||
``` | ||
|
||
## Use the cli | ||
|
||
detekt will exit with one of the following exit codes: | ||
|
||
| Exit code | Description | | ||
| --------- | ------------------------------------------------------------------------------ | | ||
| 0 | detekt ran normally and maxIssues count was not reached in BuildFailureReport. | | ||
| 1 | An unexpected error occurred | | ||
| 2 | MaxIssues count was reached in BuildFailureReport. | | ||
| 3 | Invalid detekt configuration file detected. | | ||
|
||
The following parameters are shown when `--help` is entered. | ||
|
||
<CliOptions /> | ||
|
||
## Use the cli to generate configuration for custom rules | ||
|
||
<CliGeneratorOptions /> | ||
|
||
```sh | ||
java -jar detekt-generator-[detekt_version]-all.jar -gcrc -i /path/to/rule1, /path/to/rule2 | ||
``` |
Oops, something went wrong.