mirror of
https://github.com/jlengrand/detekt.git
synced 2026-03-10 08:11:23 +00:00
Replace @active KDoc tag with @ActiveByDefault annotation (#3592)
* Add @ActiveByDefault annotation * Add support for @ActiveByDefault annotation * Use annotation for all activated in v1.2.0 * Use annotation for all activated after v1.2.0 * Use annotation for all activated in v1.0.0 * Update documentation with regard to RuleSetProvider * Update documentation * Remove leading 'v' from version in annotation * Use named parameter 'since' for @ActiveByDefault * check version matches semantic version pattern. * Fix typo and correct version format * Fix merge errors Co-authored-by: Markus Schwarz <post@markus-schwarz.net> Co-authored-by: Chao Zhang <zhangchao6865@gmail.com>
This commit is contained in:
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@@ -64,7 +64,7 @@ Kotlin files AST. This can be helpful when implementing and debugging rules.
|
||||
|
||||
After some time and testing there is a chance this rule will become active on default.
|
||||
|
||||
Rules that contain an `@active` tag in their KDoc will be marked as active in the `default-detekt-config.yml`.
|
||||
Rules annotated with `@ActiveByDefault` will be marked as active in the`default-detekt-config.yml`.
|
||||
|
||||
### When updating the website ...
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
package io.gitlab.arturbosch.detekt.api.internal
|
||||
|
||||
/**
|
||||
* Annotated [io.gitlab.arturbosch.detekt.api.Rule] or [io.gitlab.arturbosch.detekt.api.RuleSetProvider]
|
||||
* is active by default.
|
||||
*/
|
||||
@Target(AnnotationTarget.CLASS)
|
||||
@Retention(AnnotationRetention.SOURCE)
|
||||
annotation class ActiveByDefault(
|
||||
/**
|
||||
* The Detekt version the rule was activated by default in the following format: <major>.<minor>.<patch>,
|
||||
* where major, minor and patch are non-negative integer numbers.
|
||||
*/
|
||||
val since: String
|
||||
)
|
||||
@@ -3,6 +3,7 @@ package io.gitlab.arturbosch.detekt.formatting
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSet
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSetProvider
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
|
||||
/**
|
||||
* This rule set provides wrappers for rules implemented by ktlint - https://ktlint.github.io/.
|
||||
@@ -16,8 +17,8 @@ import io.gitlab.arturbosch.detekt.api.RuleSetProvider
|
||||
*
|
||||
* @configuration android - if android style guides should be preferred (default: `false`)
|
||||
* @configuration autoCorrect - if rules should auto correct style violation (default: `true`)
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class FormattingProvider : RuleSetProvider {
|
||||
|
||||
override val ruleSetId: String = "formatting"
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.ChainWrappingRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ChainWrapping(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = ChainWrappingRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.CommentSpacingRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class CommentSpacing(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = CommentSpacingRule()
|
||||
|
||||
@@ -2,13 +2,13 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.FilenameRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class Filename(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = FilenameRule()
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
import com.pinterest.ktlint.core.api.FeatureInAlphaState
|
||||
import com.pinterest.ktlint.ruleset.standard.FinalNewlineRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
import io.gitlab.arturbosch.detekt.formatting.INSERT_FINAL_NEWLINE_KEY
|
||||
import org.ec4j.core.model.Property
|
||||
@@ -13,11 +14,10 @@ import org.ec4j.core.model.PropertyType
|
||||
*
|
||||
* @configuration insertFinalNewLine - report absence or presence of a newline (default: `true`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*
|
||||
*/
|
||||
@OptIn(FeatureInAlphaState::class)
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class FinalNewline(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = FinalNewlineRule()
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.MaxLineLengthRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.ANDROID_MAX_LINE_LENGTH
|
||||
import io.gitlab.arturbosch.detekt.formatting.DEFAULT_IDEA_LINE_LENGTH
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
@@ -11,9 +12,8 @@ import io.gitlab.arturbosch.detekt.formatting.MAX_LINE_LENGTH_KEY
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @configuration maxLineLength - maximum line length (default: `120`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class MaximumLineLength(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = MaxLineLengthRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.ModifierOrderRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-modifier-order">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ModifierOrdering(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = ModifierOrderRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.experimental.MultiLineIfElseRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-modifier-order">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class MultiLineIfElse(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = MultiLineIfElseRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoBlankLineBeforeRbraceRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoBlankLineBeforeRbrace(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoBlankLineBeforeRbraceRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoConsecutiveBlankLinesRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-blank">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoConsecutiveBlankLines(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoConsecutiveBlankLinesRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoEmptyClassBodyRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-empty-class-body">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoEmptyClassBody(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoEmptyClassBodyRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoLineBreakAfterElseRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoLineBreakAfterElse(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoLineBreakAfterElseRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoLineBreakBeforeAssignmentRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoLineBreakBeforeAssignment(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoLineBreakBeforeAssignmentRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoMultipleSpacesRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoMultipleSpaces(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoMultipleSpacesRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoSemicolonsRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-semi">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoSemicolons(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoSemicolonsRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoTrailingSpacesRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-trailing-whitespaces">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoTrailingSpaces(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoTrailingSpacesRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoUnitReturnRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-unit-return">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoUnitReturn(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoUnitReturnRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoUnusedImportsRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoUnusedImports(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoUnusedImportsRule()
|
||||
|
||||
@@ -2,13 +2,13 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.NoWildcardImportsRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-import">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NoWildcardImports(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = NoWildcardImportsRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.experimental.PackageNameRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class PackageName(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = PackageNameRule()
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.ParameterListWrappingRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.DEFAULT_INDENT
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
import io.gitlab.arturbosch.detekt.formatting.INDENT_SIZE_KEY
|
||||
@@ -11,9 +12,9 @@ import io.gitlab.arturbosch.detekt.formatting.INDENT_SIZE_KEY
|
||||
*
|
||||
* @configuration indentSize - indentation size (default: `4`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ParameterListWrapping(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = ParameterListWrappingRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundColonRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundColon(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundColonRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundCommaRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundComma(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundCommaRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundCurlyRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundCurly(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundCurlyRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundDotRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundDot(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundDotRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundKeywordRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundKeyword(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundKeywordRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundOperatorsRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundOperators(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundOperatorsRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundParensRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundParens(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundParensRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.SpacingAroundRangeOperatorRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-spacing">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class SpacingAroundRangeOperator(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = SpacingAroundRangeOperatorRule()
|
||||
|
||||
@@ -2,14 +2,15 @@ package io.gitlab.arturbosch.detekt.formatting.wrappers
|
||||
|
||||
import com.pinterest.ktlint.ruleset.standard.StringTemplateRule
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
|
||||
/**
|
||||
* See <a href="https://ktlint.github.io/#rule-string-template">ktlint-website</a> for documentation.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
* @autoCorrect since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class StringTemplate(config: Config) : FormattingRule(config) {
|
||||
|
||||
override val wrapping = StringTemplateRule()
|
||||
|
||||
@@ -1,7 +1,30 @@
|
||||
package io.gitlab.arturbosch.detekt.generator.collection
|
||||
|
||||
import org.jetbrains.kotlin.psi.KtAnnotationEntry
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
fun KtClassOrObject.isAnnotatedWith(annotation: KClass<out Annotation>) =
|
||||
annotationEntries.any { it.shortName?.identifier == annotation.simpleName }
|
||||
fun KtClassOrObject.isAnnotatedWith(annotation: KClass<out Annotation>): Boolean =
|
||||
annotationEntries.any { it.isOfType(annotation) }
|
||||
|
||||
fun KtClassOrObject.firstAnnotationParameter(annotation: KClass<out Annotation>): String =
|
||||
checkNotNull(firstAnnotationParameterOrNull(annotation))
|
||||
|
||||
fun KtClassOrObject.firstAnnotationParameterOrNull(annotation: KClass<out Annotation>): String? =
|
||||
annotationEntries
|
||||
.firstOrNull { it.isOfType(annotation) }
|
||||
?.firstParameterOrNull()
|
||||
|
||||
private fun KtAnnotationEntry.isOfType(annotation: KClass<out Annotation>) =
|
||||
shortName?.identifier == annotation.simpleName
|
||||
|
||||
private fun KtAnnotationEntry.firstParameterOrNull() =
|
||||
valueArguments
|
||||
.firstOrNull()
|
||||
?.getArgumentExpression()
|
||||
?.text
|
||||
?.withoutQuotes()
|
||||
|
||||
private fun String.withoutQuotes() = removePrefix(QUOTES).removeSuffix(QUOTES)
|
||||
|
||||
private const val QUOTES = "\""
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package io.gitlab.arturbosch.detekt.generator.collection
|
||||
|
||||
import io.gitlab.arturbosch.detekt.generator.collection.exception.InvalidDocumentationException
|
||||
|
||||
sealed class DefaultActivationStatus {
|
||||
abstract val active: Boolean
|
||||
}
|
||||
|
||||
object Inactive : DefaultActivationStatus() {
|
||||
override val active = false
|
||||
}
|
||||
|
||||
data class Active(val since: String) : DefaultActivationStatus() {
|
||||
override val active = true
|
||||
|
||||
init {
|
||||
if (!since.matches(SEMANTIC_VERSION_PATTERN)) {
|
||||
throw InvalidDocumentationException(
|
||||
"'$since' must match the semantic version pattern <major>.<minor>.<patch>"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val SEMANTIC_VERSION_PATTERN = """^\d+\.\d+.\d+$""".toRegex()
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,7 @@ data class Rule(
|
||||
val description: String,
|
||||
val nonCompliantCodeExample: String,
|
||||
val compliantCodeExample: String,
|
||||
val active: Boolean,
|
||||
val activeSince: String? = null,
|
||||
val defaultActivationStatus: DefaultActivationStatus,
|
||||
var severity: String,
|
||||
var debt: String,
|
||||
var aliases: String?,
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.gitlab.arturbosch.detekt.generator.collection
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.DetektVisitor
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
|
||||
import io.gitlab.arturbosch.detekt.generator.collection.exception.InvalidDocumentationException
|
||||
import io.gitlab.arturbosch.detekt.rules.isOverride
|
||||
@@ -16,7 +17,7 @@ import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
|
||||
data class RuleSetProvider(
|
||||
val name: String,
|
||||
val description: String,
|
||||
val active: Boolean,
|
||||
val defaultActivationStatus: DefaultActivationStatus,
|
||||
val rules: List<String> = listOf(),
|
||||
val configuration: List<Configuration> = listOf()
|
||||
)
|
||||
@@ -34,7 +35,6 @@ class RuleSetProviderCollector : Collector<RuleSetProvider> {
|
||||
}
|
||||
}
|
||||
|
||||
private const val TAG_ACTIVE = "active"
|
||||
private const val PROPERTY_RULE_SET_ID = "ruleSetId"
|
||||
|
||||
private val SUPPORTED_PROVIDERS =
|
||||
@@ -44,7 +44,7 @@ class RuleSetProviderVisitor : DetektVisitor() {
|
||||
var containsRuleSetProvider = false
|
||||
private var name: String = ""
|
||||
private var description: String = ""
|
||||
private var active: Boolean = false
|
||||
private var defaultActivationStatus: DefaultActivationStatus = Inactive
|
||||
private val ruleNames: MutableList<String> = mutableListOf()
|
||||
private val configuration = mutableListOf<Configuration>()
|
||||
|
||||
@@ -57,7 +57,7 @@ class RuleSetProviderVisitor : DetektVisitor() {
|
||||
throw InvalidDocumentationException("Missing description for RuleSet $name.")
|
||||
}
|
||||
|
||||
return RuleSetProvider(name, description, active, ruleNames, configuration)
|
||||
return RuleSetProvider(name, description, defaultActivationStatus, ruleNames, configuration)
|
||||
}
|
||||
|
||||
override fun visitSuperTypeList(list: KtSuperTypeList) {
|
||||
@@ -71,7 +71,9 @@ class RuleSetProviderVisitor : DetektVisitor() {
|
||||
|
||||
override fun visitClassOrObject(classOrObject: KtClassOrObject) {
|
||||
description = classOrObject.docComment?.getDefaultSection()?.getContent()?.trim() ?: ""
|
||||
active = classOrObject.docComment?.getDefaultSection()?.findTagByName(TAG_ACTIVE) != null
|
||||
if (classOrObject.isAnnotatedWith(ActiveByDefault::class)) {
|
||||
defaultActivationStatus = Active(since = classOrObject.firstAnnotationParameter(ActiveByDefault::class))
|
||||
}
|
||||
configuration.addAll(classOrObject.parseConfigurationTags())
|
||||
super.visitClassOrObject(classOrObject)
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.gitlab.arturbosch.detekt.generator.collection
|
||||
import io.gitlab.arturbosch.detekt.api.Debt
|
||||
import io.gitlab.arturbosch.detekt.api.DetektVisitor
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdRule
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import io.gitlab.arturbosch.detekt.formatting.FormattingRule
|
||||
import io.gitlab.arturbosch.detekt.generator.collection.exception.InvalidAliasesDeclaration
|
||||
@@ -27,8 +28,7 @@ internal class RuleVisitor : DetektVisitor() {
|
||||
private var nonCompliant = ""
|
||||
private var compliant = ""
|
||||
private var name = ""
|
||||
private var active = false
|
||||
private var activeSince: String? = null
|
||||
private var defaultActivationStatus: DefaultActivationStatus = Inactive
|
||||
private var autoCorrect = false
|
||||
private var requiresTypeResolution = false
|
||||
private var severity = ""
|
||||
@@ -48,8 +48,7 @@ internal class RuleVisitor : DetektVisitor() {
|
||||
description = description,
|
||||
nonCompliantCodeExample = nonCompliant,
|
||||
compliantCodeExample = compliant,
|
||||
active = active,
|
||||
activeSince = activeSince,
|
||||
defaultActivationStatus = defaultActivationStatus,
|
||||
severity = severity,
|
||||
debt = debt,
|
||||
aliases = aliases,
|
||||
@@ -91,14 +90,9 @@ internal class RuleVisitor : DetektVisitor() {
|
||||
throw InvalidDocumentationException("KDoc for rule $name must not contain tabs")
|
||||
}
|
||||
|
||||
active = classOrObject.hasKDocTag(TAG_ACTIVE)
|
||||
val activeTagContent = classOrObject.kDocSection()
|
||||
?.findTagByName(TAG_ACTIVE)
|
||||
?.getContent()
|
||||
?.split(" ")
|
||||
.orEmpty()
|
||||
if (SINCE_KEYWORD in activeTagContent) {
|
||||
activeSince = activeTagContent.last()
|
||||
if (classOrObject.isAnnotatedWith(ActiveByDefault::class)) {
|
||||
val activeByDefaultSinceValue = classOrObject.firstAnnotationParameter(ActiveByDefault::class)
|
||||
defaultActivationStatus = Active(since = activeByDefaultSinceValue)
|
||||
}
|
||||
|
||||
autoCorrect = classOrObject.hasKDocTag(TAG_AUTO_CORRECT)
|
||||
@@ -202,8 +196,6 @@ internal class RuleVisitor : DetektVisitor() {
|
||||
EmptyRule::class.simpleName
|
||||
)
|
||||
|
||||
private const val TAG_ACTIVE = "active"
|
||||
private const val SINCE_KEYWORD = "since"
|
||||
private const val TAG_AUTO_CORRECT = "autoCorrect"
|
||||
private const val TAG_NONCOMPLIANT = "<noncompliant>"
|
||||
private const val ENDTAG_NONCOMPLIANT = "</noncompliant>"
|
||||
|
||||
@@ -33,7 +33,7 @@ object ConfigPrinter : DocumentationPrinter<List<RuleSetPage>> {
|
||||
@Suppress("ComplexMethod") // preserving the declarative structure while building the dsl
|
||||
private fun YamlNode.printRuleSet(ruleSet: RuleSetProvider, rules: List<Rule>) {
|
||||
node(ruleSet.name) {
|
||||
keyValue { "active" to "${ruleSet.active}" }
|
||||
keyValue { "active" to "${ruleSet.defaultActivationStatus.active}" }
|
||||
val ruleSetExclusion = exclusions.singleOrNull { ruleSet.name in it.ruleSets }
|
||||
if (ruleSetExclusion != null) {
|
||||
keyValue { Config.EXCLUDES_KEY to ruleSetExclusion.pattern }
|
||||
@@ -48,7 +48,7 @@ object ConfigPrinter : DocumentationPrinter<List<RuleSetPage>> {
|
||||
}
|
||||
rules.forEach { rule ->
|
||||
node(rule.name) {
|
||||
keyValue { Config.ACTIVE_KEY to "${rule.active}" }
|
||||
keyValue { Config.ACTIVE_KEY to "${rule.defaultActivationStatus.active}" }
|
||||
if (rule.autoCorrect) {
|
||||
keyValue { Config.AUTO_CORRECT_KEY to "true" }
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package io.gitlab.arturbosch.detekt.generator.printer.rulesetpage
|
||||
|
||||
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
|
||||
@@ -41,8 +42,8 @@ object RuleSetPagePrinter : DocumentationPrinter<RuleSetPage> {
|
||||
}
|
||||
|
||||
paragraph {
|
||||
"${bold { "Active by default" }}: ${if (rule.active) "Yes" else "No"}" +
|
||||
(rule.activeSince?.let { " - Since $it" } ?: "")
|
||||
"${bold { "Active by default" }}: ${if (rule.defaultActivationStatus.active) "Yes" else "No"}" +
|
||||
((rule.defaultActivationStatus as? Active)?.let { " - Since v${it.since}" } ?: "")
|
||||
}
|
||||
|
||||
if (rule.requiresTypeResolution) {
|
||||
|
||||
@@ -75,7 +75,7 @@ class RuleCollectorSpec : Spek({
|
||||
assertThat(items[0].description).contains("more...")
|
||||
}
|
||||
|
||||
it("is not active") {
|
||||
it("is not active by default") {
|
||||
val code = """
|
||||
/**
|
||||
* description
|
||||
@@ -83,45 +83,44 @@ class RuleCollectorSpec : Spek({
|
||||
class SomeRandomClass : Rule
|
||||
"""
|
||||
val items = subject.run(code)
|
||||
assertThat(items[0].active).isFalse()
|
||||
assertThat(items[0].defaultActivationStatus.active).isFalse()
|
||||
}
|
||||
|
||||
it("is active tag present") {
|
||||
it("is active by default with valid version") {
|
||||
val code = """
|
||||
/**
|
||||
* description
|
||||
* @active
|
||||
*/
|
||||
@ActiveByDefault("1.12.123")
|
||||
class SomeRandomClass : Rule
|
||||
"""
|
||||
val items = subject.run(code)
|
||||
assertThat(items[0].active).isTrue()
|
||||
val defaultActivationStatus = items[0].defaultActivationStatus as Active
|
||||
assertThat(defaultActivationStatus.since).isEqualTo("1.12.123")
|
||||
}
|
||||
|
||||
it("is active tag present with since") {
|
||||
it("is active by default with named since") {
|
||||
val code = """
|
||||
/**
|
||||
* description
|
||||
* @active since v1.2.3
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.3")
|
||||
class SomeRandomClass : Rule
|
||||
"""
|
||||
val items = subject.run(code)
|
||||
assertThat(items[0].active).isTrue
|
||||
assertThat(items[0].activeSince).isEqualTo("v1.2.3")
|
||||
val defaultActivationStatus = items[0].defaultActivationStatus as Active
|
||||
assertThat(defaultActivationStatus.since).isEqualTo("1.2.3")
|
||||
}
|
||||
|
||||
it("is active tag present with since") {
|
||||
it("is active by default with invalid version") {
|
||||
val code = """
|
||||
/**
|
||||
* description
|
||||
* @active whatever
|
||||
*/
|
||||
@ActiveByDefault("1.2.x")
|
||||
class SomeRandomClass : Rule
|
||||
"""
|
||||
val items = subject.run(code)
|
||||
assertThat(items[0].active).isTrue
|
||||
assertThat(items[0].activeSince).isNull()
|
||||
assertThatExceptionOfType(InvalidDocumentationException::class.java).isThrownBy { subject.run(code) }
|
||||
}
|
||||
|
||||
it("is auto-correctable tag is present") {
|
||||
@@ -136,18 +135,6 @@ class RuleCollectorSpec : Spek({
|
||||
assertThat(items[0].autoCorrect).isTrue()
|
||||
}
|
||||
|
||||
it("is active if the tag is there and has a description") {
|
||||
val code = """
|
||||
/**
|
||||
* description
|
||||
* @active description about the active tag
|
||||
*/
|
||||
class SomeRandomClass : Rule
|
||||
"""
|
||||
val items = subject.run(code)
|
||||
assertThat(items[0].active).isTrue()
|
||||
}
|
||||
|
||||
it("collects the issue property") {
|
||||
val code = """
|
||||
/**
|
||||
|
||||
@@ -87,8 +87,9 @@ class RuleSetProviderCollectorSpec : Spek({
|
||||
/**
|
||||
* $description
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*
|
||||
*/
|
||||
@ActiveByDefault("1.0.0")
|
||||
class TestProvider: RuleSetProvider {
|
||||
override val ruleSetId: String = "$ruleSetId"
|
||||
|
||||
@@ -127,7 +128,7 @@ class RuleSetProviderCollectorSpec : Spek({
|
||||
it("is active") {
|
||||
val items = subject.run(code)
|
||||
val provider = items[0]
|
||||
assertThat(provider.active).isTrue()
|
||||
assertThat(provider.defaultActivationStatus.active).isTrue()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,7 +156,7 @@ class RuleSetProviderCollectorSpec : Spek({
|
||||
it("is not active") {
|
||||
val items = subject.run(code)
|
||||
val provider = items[0]
|
||||
assertThat(provider.active).isFalse()
|
||||
assertThat(provider.defaultActivationStatus.active).isFalse()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -206,6 +207,31 @@ class RuleSetProviderCollectorSpec : Spek({
|
||||
}
|
||||
}
|
||||
|
||||
context("a RuleSetProvider with invalid activation version") {
|
||||
val code = """
|
||||
package foo
|
||||
|
||||
/**
|
||||
* description
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.xyz")
|
||||
class TestProvider: RuleSetProvider {
|
||||
override val ruleSetId: String = "ruleSetId"
|
||||
|
||||
override fun instance(config: Config): RuleSet {
|
||||
return RuleSet(ruleSetId, listOf(
|
||||
TestRule(config)
|
||||
))
|
||||
}
|
||||
}
|
||||
"""
|
||||
|
||||
it("throws an exception") {
|
||||
assertThatExceptionOfType(InvalidDocumentationException::class.java)
|
||||
.isThrownBy { subject.run(code) }
|
||||
}
|
||||
}
|
||||
|
||||
context("a RuleSetProvider with no rules") {
|
||||
val ruleSetId = "test"
|
||||
val code = """
|
||||
@@ -236,9 +262,8 @@ class RuleSetProviderCollectorSpec : Spek({
|
||||
|
||||
/**
|
||||
* $description
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault("1.0.0")
|
||||
class TestProvider: RuleSetProvider {
|
||||
override val ruleSetId: String = "$ruleSetId"
|
||||
|
||||
|
||||
@@ -1,13 +1,15 @@
|
||||
package io.gitlab.arturbosch.detekt.generator.util
|
||||
|
||||
import io.gitlab.arturbosch.detekt.generator.collection.Active
|
||||
import io.gitlab.arturbosch.detekt.generator.collection.Configuration
|
||||
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.printer.rulesetpage.RuleSetPage
|
||||
|
||||
internal fun createRuleSetPage(): RuleSetPage {
|
||||
val rules = createRules()
|
||||
val ruleSetProvider = RuleSetProvider("style", "style rule set", true, rules.map { it.name })
|
||||
val ruleSetProvider = RuleSetProvider("style", "style rule set", Active("1.0.0"), rules.map { it.name })
|
||||
return RuleSetPage(ruleSetProvider, rules)
|
||||
}
|
||||
|
||||
@@ -17,8 +19,7 @@ internal fun createRules(): List<Rule> {
|
||||
description = "a wildcard import",
|
||||
nonCompliantCodeExample = "import foo.*",
|
||||
compliantCodeExample = "import foo.bar",
|
||||
active = true,
|
||||
activeSince = "v1.0.0",
|
||||
defaultActivationStatus = Active(since = "1.0.0"),
|
||||
severity = "Defect",
|
||||
debt = "10min",
|
||||
aliases = "alias1, alias2",
|
||||
@@ -33,7 +34,7 @@ internal fun createRules(): List<Rule> {
|
||||
description = "equals null",
|
||||
nonCompliantCodeExample = "",
|
||||
compliantCodeExample = "",
|
||||
active = false,
|
||||
defaultActivationStatus = Inactive,
|
||||
severity = "",
|
||||
debt = "",
|
||||
aliases = null,
|
||||
@@ -45,8 +46,7 @@ internal fun createRules(): List<Rule> {
|
||||
description = "removes :Unit",
|
||||
nonCompliantCodeExample = "fun stuff(): Unit {}",
|
||||
compliantCodeExample = "fun stuff() {}",
|
||||
active = true,
|
||||
activeSince = "v1.16.0",
|
||||
defaultActivationStatus = Active(since = "1.16.0"),
|
||||
severity = "",
|
||||
debt = "5m",
|
||||
aliases = null,
|
||||
|
||||
@@ -29,8 +29,6 @@ import java.util.Collections
|
||||
* Adapted from Unbescape - https://github.com/unbescape/unbescape/
|
||||
*
|
||||
* Utility class for performing XML escape/unescape operations.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
object XmlEscape {
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.gitlab.arturbosch.detekt.api.Metric
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdRule
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdedCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtBinaryExpression
|
||||
import org.jetbrains.kotlin.psi.KtDoWhileExpression
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
@@ -37,9 +38,8 @@ import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
|
||||
* </compliant>
|
||||
*
|
||||
* @configuration threshold - the number of conditions which will trigger the rule (default: `4`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ComplexCondition(
|
||||
config: Config = Config.empty,
|
||||
threshold: Int = DEFAULT_CONDITIONS_COUNT
|
||||
|
||||
@@ -10,6 +10,7 @@ import io.gitlab.arturbosch.detekt.api.Metric
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdRule
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdedCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.valueOrDefaultCommaSeparated
|
||||
import org.jetbrains.kotlin.psi.KtBlockExpression
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
@@ -44,9 +45,8 @@ import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
* `for` statement (default: `false`)
|
||||
* @configuration nestingFunctions - Comma separated list of function names which add complexity
|
||||
* (default: `[run, let, apply, with, also, use, forEach, isNotNull, ifNull]`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ComplexMethod(
|
||||
config: Config = Config.empty,
|
||||
threshold: Int = DEFAULT_THRESHOLD_METHOD_COMPLEXITY
|
||||
|
||||
@@ -2,13 +2,13 @@ package io.gitlab.arturbosch.detekt.rules.complexity
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSet
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
|
||||
|
||||
/**
|
||||
* This rule set contains rules that report complex code.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ComplexityProvider : DefaultRuleSetProvider {
|
||||
|
||||
override val ruleSetId: String = "complexity"
|
||||
|
||||
@@ -9,6 +9,7 @@ import io.gitlab.arturbosch.detekt.api.Metric
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdRule
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdedCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
@@ -22,9 +23,8 @@ import java.util.IdentityHashMap
|
||||
* things.
|
||||
*
|
||||
* @configuration threshold - the size of class required to trigger the rule (default: `600`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class LargeClass(
|
||||
config: Config = Config.empty,
|
||||
threshold: Int = DEFAULT_THRESHOLD_CLASS_LENGTH
|
||||
|
||||
@@ -9,6 +9,7 @@ import io.gitlab.arturbosch.detekt.api.Metric
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdRule
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdedCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
@@ -22,9 +23,8 @@ import java.util.IdentityHashMap
|
||||
* Extract parts of the functionality of long methods into separate, smaller methods.
|
||||
*
|
||||
* @configuration threshold - number of lines in a method to trigger the rule (default: `60`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class LongMethod(
|
||||
config: Config = Config.empty,
|
||||
threshold: Int = DEFAULT_THRESHOLD_METHOD_LENGTH
|
||||
|
||||
@@ -9,6 +9,7 @@ import io.gitlab.arturbosch.detekt.api.Metric
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdedCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.valueOrDefaultCommaSeparated
|
||||
import io.gitlab.arturbosch.detekt.rules.isOverride
|
||||
import org.jetbrains.kotlin.psi.KtAnnotated
|
||||
@@ -34,9 +35,8 @@ import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
|
||||
* @configuration ignoreAnnotated - ignore long parameters list for constructors or functions in the context of these
|
||||
* annotation class names (default: `[]`); (e.g. ['Inject', 'Module', 'Suppress']);
|
||||
* the most common case is for dependency injection where constructors are annotated with @Inject.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class LongParameterList(
|
||||
config: Config = Config.empty
|
||||
) : Rule(config) {
|
||||
|
||||
@@ -9,6 +9,7 @@ import io.gitlab.arturbosch.detekt.api.Metric
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdRule
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdedCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.isUsedForNesting
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtContainerNodeForControlStructureBody
|
||||
@@ -26,9 +27,8 @@ import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
* Prefer extracting the nested code into well-named functions to make it easier to understand.
|
||||
*
|
||||
* @configuration threshold - the nested depth required to trigger rule (default: `4`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class NestedBlockDepth(
|
||||
config: Config = Config.empty,
|
||||
threshold: Int = DEFAULT_THRESHOLD_NESTING
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.gitlab.arturbosch.detekt.api.Metric
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.ThresholdedCodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.hasAnnotation
|
||||
import io.gitlab.arturbosch.detekt.rules.isOverride
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
@@ -32,9 +33,8 @@ import org.jetbrains.kotlin.psi.psiUtil.isPrivate
|
||||
* @configuration ignoreDeprecated - ignore deprecated functions (default: `false`)
|
||||
* @configuration ignorePrivate - ignore private functions (default: `false`)
|
||||
* @configuration ignoreOverridden - ignore overridden functions (default: `false`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class TooManyFunctions(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -2,13 +2,13 @@ package io.gitlab.arturbosch.detekt.rules.coroutines
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSet
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
|
||||
|
||||
/**
|
||||
* The coroutines rule set analyzes code for potential coroutines problems.
|
||||
*
|
||||
* @active since v1.4.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.4.0")
|
||||
class CoroutinesProvider : DefaultRuleSetProvider {
|
||||
|
||||
override val ruleSetId: String = "coroutines"
|
||||
|
||||
@@ -2,14 +2,14 @@ package io.gitlab.arturbosch.detekt.rules.documentation
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSet
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
|
||||
|
||||
/**
|
||||
* This rule set provides rules that address issues in comments and documentation
|
||||
* of the code.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class CommentSmellProvider : DefaultRuleSetProvider {
|
||||
|
||||
override val ruleSetId: String = "comments"
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.MultiRule
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtCatchClause
|
||||
import org.jetbrains.kotlin.psi.KtClassInitializer
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
@@ -25,10 +26,9 @@ import org.jetbrains.kotlin.psi.KtWhileExpression
|
||||
* fun unnecessaryFunction() {
|
||||
* }
|
||||
* </noncompliant>
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@Suppress("TooManyFunctions")
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyBlocks(val config: Config = Config.empty) : MultiRule() {
|
||||
|
||||
private val emptyCatchBlock = EmptyCatchBlock(config)
|
||||
|
||||
@@ -2,6 +2,7 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.LazyRegex
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.ALLOWED_EXCEPTION_NAME
|
||||
import io.gitlab.arturbosch.detekt.rules.isAllowedExceptionName
|
||||
import org.jetbrains.kotlin.psi.KtCatchClause
|
||||
@@ -13,8 +14,8 @@ import org.jetbrains.kotlin.psi.KtCatchClause
|
||||
*
|
||||
* @configuration allowedExceptionNameRegex - ignores exception types which match this regex
|
||||
* (default: `'_|(ignore|expected).*'`)
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyCatchBlock(config: Config) : EmptyRule(
|
||||
config = config,
|
||||
description =
|
||||
|
||||
@@ -3,15 +3,15 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.hasCommentInside
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.psiUtil.isObjectLiteral
|
||||
|
||||
/**
|
||||
* Reports empty classes. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyClassBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitClassOrObject(classOrObject: KtClassOrObject) {
|
||||
|
||||
@@ -2,14 +2,14 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSet
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
|
||||
|
||||
/**
|
||||
* The empty-blocks ruleset contains rules that will report empty blocks of code
|
||||
* which should be avoided.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyCodeProvider : DefaultRuleSetProvider {
|
||||
|
||||
override val ruleSetId: String = "empty-blocks"
|
||||
|
||||
@@ -3,6 +3,7 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
@@ -13,9 +14,8 @@ import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
|
||||
|
||||
/**
|
||||
* Reports empty default constructors. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyDefaultConstructor(config: Config) : EmptyRule(config = config) {
|
||||
|
||||
override fun visitPrimaryConstructor(constructor: KtPrimaryConstructor) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtDoWhileExpression
|
||||
|
||||
/**
|
||||
* Reports empty `do`/`while` loops. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyDoWhileBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitDoWhileExpression(expression: KtDoWhileExpression) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtIfExpression
|
||||
|
||||
/**
|
||||
* Reports empty `else` blocks. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyElseBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitIfExpression(expression: KtIfExpression) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtFinallySection
|
||||
|
||||
/**
|
||||
* Reports empty `finally` blocks. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyFinallyBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitFinallySection(finallySection: KtFinallySection) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtForExpression
|
||||
|
||||
/**
|
||||
* Reports empty `for` loops. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyForBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitForExpression(expression: KtForExpression) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.isOpen
|
||||
import io.gitlab.arturbosch.detekt.rules.isOverride
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
@@ -18,9 +19,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getParentOfType
|
||||
* @configuration ignoreOverriddenFunctions - Excludes all the overridden functions (default: `false`)
|
||||
* (deprecated: "Use `ignoreOverridden` instead")
|
||||
* @configuration ignoreOverridden - Excludes all the overridden functions (default: `false`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyFunctionBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
private val ignoreOverridden =
|
||||
|
||||
@@ -3,15 +3,15 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LeafPsiElement
|
||||
import org.jetbrains.kotlin.lexer.KtSingleValueToken
|
||||
import org.jetbrains.kotlin.psi.KtIfExpression
|
||||
|
||||
/**
|
||||
* Reports empty `if` blocks. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyIfBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitIfExpression(expression: KtIfExpression) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtClassInitializer
|
||||
|
||||
/**
|
||||
* Reports empty `init` expressions. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyInitBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitClassInitializer(initializer: KtClassInitializer) {
|
||||
|
||||
@@ -3,13 +3,13 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtFile
|
||||
|
||||
/**
|
||||
* Reports empty Kotlin (.kt) files. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyKtFile(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitKtFile(file: KtFile) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtSecondaryConstructor
|
||||
|
||||
/**
|
||||
* Reports empty secondary constructors. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptySecondaryConstructor(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitSecondaryConstructor(constructor: KtSecondaryConstructor) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtTryExpression
|
||||
|
||||
/**
|
||||
* Reports empty `try` blocks. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.6.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.6.0")
|
||||
class EmptyTryBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitTryExpression(expression: KtTryExpression) {
|
||||
|
||||
@@ -3,13 +3,13 @@ package io.gitlab.arturbosch.detekt.rules.empty
|
||||
import io.gitlab.arturbosch.detekt.api.CodeSmell
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
|
||||
/**
|
||||
* Reports empty `when` expressions. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyWhenBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitWhenExpression(expression: KtWhenExpression) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package io.gitlab.arturbosch.detekt.rules.empty
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtWhileExpression
|
||||
|
||||
/**
|
||||
* Reports empty `while` expressions. Empty blocks of code serve no purpose and should be removed.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EmptyWhileBlock(config: Config) : EmptyRule(config) {
|
||||
|
||||
override fun visitWhileExpression(expression: KtWhileExpression) {
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
|
||||
/**
|
||||
@@ -29,9 +30,8 @@ import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
* else -> println("else")
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class DuplicateCaseInWhenExpression(config: Config) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.isEqualsFunction
|
||||
import org.jetbrains.kotlin.KtNodeTypes
|
||||
import org.jetbrains.kotlin.com.intellij.psi.PsiElement
|
||||
@@ -35,9 +36,8 @@ import org.jetbrains.kotlin.psi.psiUtil.collectDescendantsOfType
|
||||
* return this === other
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
class EqualsAlwaysReturnsTrueOrFalse(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.isEqualsFunction
|
||||
import io.gitlab.arturbosch.detekt.rules.isHashCodeFunction
|
||||
import org.jetbrains.kotlin.com.intellij.psi.PsiFile
|
||||
@@ -43,9 +44,8 @@ import java.util.ArrayDeque
|
||||
* }
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class EqualsWithHashCodeExist(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.getCallNameExpression
|
||||
@@ -22,9 +23,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
|
||||
* Runtime.getRuntime().gc()
|
||||
* System.runFinalization()
|
||||
* </noncompliant>
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ExplicitGarbageCollectionCall(config: Config) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns.isStringOrNullableString
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtDotQualifiedExpression
|
||||
@@ -40,9 +41,8 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getType
|
||||
* str.toUpperCase(Locale.US)
|
||||
* str.toLowerCase(Locale.US)
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class ImplicitDefaultLocale(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.getIntValueForPsiElement
|
||||
import org.jetbrains.kotlin.com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.psi.KtBinaryExpression
|
||||
@@ -30,9 +31,8 @@ import org.jetbrains.kotlin.psi.KtBinaryExpression
|
||||
*
|
||||
* val range = 2 until 3
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
class InvalidRange(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
@@ -27,9 +28,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getSuperNames
|
||||
* }
|
||||
* }
|
||||
* </noncompliant>
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
class IteratorHasNextCallsNextMethod(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
import org.jetbrains.kotlin.psi.KtNamedDeclaration
|
||||
@@ -42,9 +43,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getSuperNames
|
||||
* }
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
class IteratorNotThrowingNoSuchElementException(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.cfg.WhenChecker
|
||||
import org.jetbrains.kotlin.cfg.WhenMissingCase
|
||||
@@ -64,10 +65,8 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getType
|
||||
* }
|
||||
* </compliant>
|
||||
* @configuration allowElseExpression - whether `else` can be treated as a valid case for enums and sealed classes (default: `true`)
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
@RequiresTypeResolution
|
||||
class MissingWhenCase(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
|
||||
@@ -2,13 +2,13 @@ package io.gitlab.arturbosch.detekt.rules.bugs
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSet
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
|
||||
|
||||
/**
|
||||
* The potential-bugs rule set provides rules that detect potential bugs.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class PotentialBugProvider : DefaultRuleSetProvider {
|
||||
|
||||
override val ruleSetId: String = "potential-bugs"
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.KtWhenExpression
|
||||
@@ -56,10 +57,9 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
* }
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*/
|
||||
@RequiresTypeResolution
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
class RedundantElseInWhen(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue: Issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.KtUnaryExpression
|
||||
@@ -24,10 +25,9 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
* val a = 1
|
||||
* val b = a
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@RequiresTypeResolution
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class UnnecessaryNotNullOperator(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue: Issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.com.intellij.psi.impl.source.tree.LeafPsiElement
|
||||
import org.jetbrains.kotlin.diagnostics.DiagnosticWithParameters1
|
||||
@@ -29,10 +30,9 @@ import org.jetbrains.kotlin.types.ErrorType
|
||||
* val a: String? = null
|
||||
* val b = a?.length
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@RequiresTypeResolution
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class UnnecessarySafeCall(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue: Issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
@@ -31,10 +32,9 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
* println() // unreachable
|
||||
* }
|
||||
* </noncompliant>
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@RequiresTypeResolution
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class UnreachableCode(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.psi.KtPostfixExpression
|
||||
@@ -31,10 +32,9 @@ import org.jetbrains.kotlin.types.typeUtil.nullability
|
||||
* println(str?.length)
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*/
|
||||
@RequiresTypeResolution
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
class UnsafeCallOnNullableType(config: Config = Config.empty) : Rule(config) {
|
||||
override val issue: Issue = Issue(
|
||||
"UnsafeCallOnNullableType",
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.diagnostics.Errors
|
||||
import org.jetbrains.kotlin.psi.KtBinaryExpressionWithTypeRHS
|
||||
@@ -30,10 +31,9 @@ import org.jetbrains.kotlin.resolve.BindingContext
|
||||
* println(s as Int)
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@RequiresTypeResolution
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class UnsafeCast(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val defaultRuleIdAliases: Set<String> = setOf("UNCHECKED_CAST")
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.hasCorrectEqualsParameter
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
@@ -33,9 +34,8 @@ import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
* }
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.2.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.2.0")
|
||||
class WrongEqualsTypeParameter(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.valueOrDefaultCommaSeparated
|
||||
import org.jetbrains.kotlin.psi.KtExpression
|
||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||
@@ -30,8 +31,8 @@ import org.jetbrains.kotlin.psi.psiUtil.anyDescendantOfType
|
||||
*
|
||||
* @configuration methodNames - methods which should not throw exceptions
|
||||
* (default: `[toString, hashCode, equals, finalize]`)
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class ExceptionRaisedInUnexpectedLocation(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -2,13 +2,13 @@ package io.gitlab.arturbosch.detekt.rules.exceptions
|
||||
|
||||
import io.gitlab.arturbosch.detekt.api.Config
|
||||
import io.gitlab.arturbosch.detekt.api.RuleSet
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.DefaultRuleSetProvider
|
||||
|
||||
/**
|
||||
* Rules in this rule set report issues related to how code throws and handles Exceptions.
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ExceptionsProvider : DefaultRuleSetProvider {
|
||||
|
||||
override val ruleSetId: String = "exceptions"
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtCatchClause
|
||||
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
|
||||
@@ -43,9 +44,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getReceiverExpression
|
||||
* }
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class PrintStackTrace(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtCatchClause
|
||||
import org.jetbrains.kotlin.psi.KtThrowExpression
|
||||
|
||||
@@ -45,9 +46,8 @@ import org.jetbrains.kotlin.psi.KtThrowExpression
|
||||
* }
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class RethrowCaughtException(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.RequiresTypeResolution
|
||||
import org.jetbrains.kotlin.psi.KtBlockExpression
|
||||
import org.jetbrains.kotlin.psi.KtFinallySection
|
||||
@@ -39,9 +40,9 @@ import org.jetbrains.kotlin.types.KotlinType
|
||||
* </noncompliant>
|
||||
*
|
||||
* @configuration ignoreLabeled - ignores labeled return statements (default: `false`)
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@RequiresTypeResolution
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class ReturnFromFinally(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.LazyRegex
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.valueOrDefaultCommaSeparated
|
||||
import io.gitlab.arturbosch.detekt.rules.ALLOWED_EXCEPTION_NAME
|
||||
import io.gitlab.arturbosch.detekt.rules.isAllowedExceptionName
|
||||
@@ -75,8 +76,8 @@ import org.jetbrains.kotlin.psi.psiUtil.getStrictParentOfType
|
||||
* - MalformedURLException`)
|
||||
* @configuration allowedExceptionNameRegex - ignores too generic exception types which match this regex
|
||||
* (default: `'_|(ignore|expected).*'`)
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class SwallowedException(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtFinallySection
|
||||
import org.jetbrains.kotlin.psi.KtThrowExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
|
||||
@@ -24,8 +25,8 @@ import org.jetbrains.kotlin.psi.psiUtil.forEachDescendantOfType
|
||||
* }
|
||||
* }
|
||||
* </noncompliant>
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class ThrowingExceptionFromFinally(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.api.internal.valueOrDefaultCommaSeparated
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
|
||||
@@ -38,8 +39,8 @@ import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
* (default: `- IllegalArgumentException
|
||||
* - IllegalStateException
|
||||
* - IOException`)
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class ThrowingExceptionsWithoutMessageOrCause(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtCallExpression
|
||||
import org.jetbrains.kotlin.psi.KtCatchClause
|
||||
import org.jetbrains.kotlin.psi.KtThrowExpression
|
||||
@@ -36,9 +37,8 @@ import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
||||
* }
|
||||
* }
|
||||
* </compliant>
|
||||
*
|
||||
* @active since v1.16.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.16.0")
|
||||
class ThrowingNewInstanceOfSameException(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.LazyRegex
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.ALLOWED_EXCEPTION_NAME
|
||||
import io.gitlab.arturbosch.detekt.rules.isAllowedExceptionName
|
||||
import org.jetbrains.kotlin.psi.KtCatchClause
|
||||
@@ -45,8 +46,8 @@ import org.jetbrains.kotlin.psi.KtTypeReference
|
||||
* - Throwable`)
|
||||
* @configuration allowedExceptionNameRegex - ignores too generic exception types which match this regex
|
||||
* (default: `'_|(ignore|expected).*'`)
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class TooGenericExceptionCaught(config: Config) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -7,6 +7,7 @@ import io.gitlab.arturbosch.detekt.api.Entity
|
||||
import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import org.jetbrains.kotlin.psi.KtThrowExpression
|
||||
import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
|
||||
|
||||
@@ -37,9 +38,8 @@ import org.jetbrains.kotlin.psi.psiUtil.referenceExpression
|
||||
* - Exception
|
||||
* - Throwable
|
||||
* - RuntimeException`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class TooGenericExceptionThrown(config: Config) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.LazyRegex
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.identifierName
|
||||
import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
|
||||
@@ -15,8 +16,8 @@ import org.jetbrains.kotlin.psi.KtClassOrObject
|
||||
* Reports when class or object names which do not follow the specified naming convention are used.
|
||||
*
|
||||
* @configuration classPattern - naming pattern (default: `'[A-Z][a-zA-Z0-9]*'`)
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ClassNaming(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val defaultRuleIdAliases: Set<String> = setOf("ClassName")
|
||||
|
||||
@@ -8,6 +8,7 @@ import io.gitlab.arturbosch.detekt.api.Issue
|
||||
import io.gitlab.arturbosch.detekt.api.LazyRegex
|
||||
import io.gitlab.arturbosch.detekt.api.Rule
|
||||
import io.gitlab.arturbosch.detekt.api.Severity
|
||||
import io.gitlab.arturbosch.detekt.api.internal.ActiveByDefault
|
||||
import io.gitlab.arturbosch.detekt.rules.identifierName
|
||||
import io.gitlab.arturbosch.detekt.rules.isOverride
|
||||
import io.gitlab.arturbosch.detekt.rules.naming.util.isContainingExcludedClassOrObject
|
||||
@@ -21,9 +22,8 @@ import org.jetbrains.kotlin.psi.psiUtil.isPrivate
|
||||
* @configuration privateParameterPattern - naming pattern (default: `'[a-z][A-Za-z0-9]*'`)
|
||||
* @configuration excludeClassPattern - ignores variables in classes which match this regex (default: `'$^'`)
|
||||
* @configuration ignoreOverridden - ignores constructor properties that have the override modifier (default: `true`)
|
||||
*
|
||||
* @active since v1.0.0
|
||||
*/
|
||||
@ActiveByDefault(since = "1.0.0")
|
||||
class ConstructorParameterNaming(config: Config = Config.empty) : Rule(config) {
|
||||
|
||||
override val issue = Issue(
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user