Rule

open class Rule(val config: Config, val description: String, val url: URI? = null) : DetektVisitor

A rule defines how one specific code structure should look like. If code is found which does not meet this structure, it is considered as harmful regarding maintainability or readability.

A rule is implemented using the visitor pattern and should be started using the visit(KtFile) function. If calculations must be done before or after the visiting process, here are two predefined (preVisit/postVisit) functions which can be overridden to setup/teardown additional data.

Constructors

Link copied to clipboard
constructor(config: Config, description: String, url: URI? = null)

Properties

Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
Link copied to clipboard
open val ruleName: RuleName

An id this rule is identified with.

Link copied to clipboard
val url: URI?

An url pointing to the documentation of this rule

Functions

Link copied to clipboard
fun report(finding: Finding)

Adds a new finding

Link copied to clipboard
open fun visit(root: KtFile)

Init function to start visiting the KtFile. Can be overridden to start a different visiting process.

Link copied to clipboard
fun visitAnnotatedExpression(@NotNull expression: KtAnnotatedExpression, data: Void?): Void?
open fun visitAnnotatedExpression(@NotNull expression: KtAnnotatedExpression)
Link copied to clipboard
fun visitAnnotation(@NotNull annotation: KtAnnotation, data: Void?): Void?
open fun visitAnnotation(@NotNull annotation: KtAnnotation)
Link copied to clipboard
fun visitAnnotationEntry(@NotNull annotationEntry: KtAnnotationEntry, data: Void?): Void?
open fun visitAnnotationEntry(@NotNull annotationEntry: KtAnnotationEntry)
Link copied to clipboard
open fun visitAnnotationUseSiteTarget(@NotNull annotationTarget: KtAnnotationUseSiteTarget, data: Void?): Void?
Link copied to clipboard
fun visitAnonymousInitializer(@NotNull initializer: KtAnonymousInitializer, data: Void?): Void?
open fun visitAnonymousInitializer(@NotNull initializer: KtAnonymousInitializer)
Link copied to clipboard
fun visitArgument(@NotNull argument: KtValueArgument, data: Void?): Void?
open fun visitArgument(@NotNull argument: KtValueArgument)
Link copied to clipboard
fun visitArrayAccessExpression(@NotNull expression: KtArrayAccessExpression, data: Void?): Void?
open fun visitArrayAccessExpression(@NotNull expression: KtArrayAccessExpression)
Link copied to clipboard
open fun visitBackingField(@NotNull accessor: KtBackingField, data: Void?): Void?
Link copied to clipboard
fun visitBinaryExpression(@NotNull expression: KtBinaryExpression, data: Void?): Void?
open fun visitBinaryExpression(@NotNull expression: KtBinaryExpression)
Link copied to clipboard
open fun visitBinaryFile(@NotNull file: @NotNull PsiBinaryFile)
Link copied to clipboard
fun visitBinaryWithTypeRHSExpression(@NotNull expression: KtBinaryExpressionWithTypeRHS, data: Void?): Void?
open fun visitBinaryWithTypeRHSExpression(@NotNull expression: KtBinaryExpressionWithTypeRHS)
Link copied to clipboard
fun visitBlockExpression(@NotNull expression: KtBlockExpression, data: Void?): Void?
open fun visitBlockExpression(@NotNull expression: KtBlockExpression)
Link copied to clipboard
fun visitBlockStringTemplateEntry(@NotNull entry: KtBlockStringTemplateEntry, data: Void?): Void?
open fun visitBlockStringTemplateEntry(@NotNull entry: KtBlockStringTemplateEntry)
Link copied to clipboard
fun visitBreakExpression(@NotNull expression: KtBreakExpression, data: Void?): Void?
open fun visitBreakExpression(@NotNull expression: KtBreakExpression)
Link copied to clipboard
fun visitCallableReferenceExpression(@NotNull expression: KtCallableReferenceExpression, data: Void?): Void?
open fun visitCallableReferenceExpression(@NotNull expression: KtCallableReferenceExpression)
Link copied to clipboard
fun visitCallExpression(@NotNull expression: KtCallExpression, data: Void?): Void?
open fun visitCallExpression(@NotNull expression: KtCallExpression)
Link copied to clipboard
fun visitCatchSection(@NotNull catchClause: KtCatchClause, data: Void?): Void?
open fun visitCatchSection(@NotNull catchClause: KtCatchClause)
Link copied to clipboard
fun visitClass(@NotNull klass: KtClass, data: Void?): Void?
open fun visitClass(@NotNull klass: KtClass)
Link copied to clipboard
fun visitClassBody(@NotNull classBody: KtClassBody, data: Void?): Void?
open fun visitClassBody(@NotNull classBody: KtClassBody)
Link copied to clipboard
open fun visitClassInitializer(@NotNull initializer: KtClassInitializer, data: Void?): Void?
open fun visitClassInitializer(@NotNull initializer: KtClassInitializer)
Link copied to clipboard
fun visitClassLiteralExpression(@NotNull expression: KtClassLiteralExpression, data: Void?): Void?
open fun visitClassLiteralExpression(@NotNull expression: KtClassLiteralExpression)
Link copied to clipboard
fun visitClassOrObject(@NotNull classOrObject: KtClassOrObject, data: Void?): Void?
open fun visitClassOrObject(@NotNull classOrObject: KtClassOrObject)
Link copied to clipboard
fun visitCollectionLiteralExpression(@NotNull expression: KtCollectionLiteralExpression, data: Void?): Void?
open fun visitCollectionLiteralExpression(@NotNull expression: KtCollectionLiteralExpression)
Link copied to clipboard
open fun visitComment(@NotNull comment: @NotNull PsiComment)
Link copied to clipboard
fun visitConstantExpression(@NotNull expression: KtConstantExpression, data: Void?): Void?
open fun visitConstantExpression(@NotNull expression: KtConstantExpression)
Link copied to clipboard
fun visitConstructorCalleeExpression(@NotNull constructorCalleeExpression: KtConstructorCalleeExpression, data: Void?): Void?
open fun visitConstructorCalleeExpression(@NotNull constructorCalleeExpression: KtConstructorCalleeExpression)
Link copied to clipboard
fun visitConstructorDelegationCall(@NotNull call: KtConstructorDelegationCall, data: Void?): Void?
open fun visitConstructorDelegationCall(@NotNull call: KtConstructorDelegationCall)
Link copied to clipboard
fun visitContextReceiverList(@NotNull contextReceiverList: KtContextReceiverList, data: Void?): Void?
open fun visitContextReceiverList(@NotNull contextReceiverList: KtContextReceiverList)
Link copied to clipboard
fun visitContinueExpression(@NotNull expression: KtContinueExpression, data: Void?): Void?
open fun visitContinueExpression(@NotNull expression: KtContinueExpression)
Link copied to clipboard
fun visitDeclaration(@NotNull dcl: KtDeclaration, data: Void?): Void?
open fun visitDeclaration(@NotNull dcl: KtDeclaration)
Link copied to clipboard
fun visitDelegatedSuperTypeEntry(@NotNull specifier: KtDelegatedSuperTypeEntry, data: Void?): Void?
open fun visitDelegatedSuperTypeEntry(@NotNull specifier: KtDelegatedSuperTypeEntry)
Link copied to clipboard
fun visitDestructuringDeclaration(@NotNull multiDeclaration: KtDestructuringDeclaration, data: Void?): Void?
open fun visitDestructuringDeclaration(@NotNull destructuringDeclaration: KtDestructuringDeclaration)
Link copied to clipboard
fun visitDestructuringDeclarationEntry(@NotNull multiDeclarationEntry: KtDestructuringDeclarationEntry, data: Void?): Void?
open fun visitDestructuringDeclarationEntry(@NotNull multiDeclarationEntry: KtDestructuringDeclarationEntry)
Link copied to clipboard
open fun visitDirectory(@NotNull dir: @NotNull PsiDirectory)
Link copied to clipboard
fun visitDotQualifiedExpression(@NotNull expression: KtDotQualifiedExpression, data: Void?): Void?
open fun visitDotQualifiedExpression(@NotNull expression: KtDotQualifiedExpression)
Link copied to clipboard
fun visitDoubleColonExpression(@NotNull expression: KtDoubleColonExpression, data: Void?): Void?
open fun visitDoubleColonExpression(@NotNull expression: KtDoubleColonExpression)
Link copied to clipboard
fun visitDoWhileExpression(@NotNull expression: KtDoWhileExpression, data: Void?): Void?
open fun visitDoWhileExpression(@NotNull expression: KtDoWhileExpression)
Link copied to clipboard
open fun visitDynamicType(@NotNull type: KtDynamicType, data: Void?): Void?
open fun visitDynamicType(@NotNull type: KtDynamicType)
Link copied to clipboard
open fun visitElement(@NotNull element: PsiElement)
Link copied to clipboard
fun visitEnumEntry(@NotNull enumEntry: KtEnumEntry, data: Void?): Void?
open fun visitEnumEntry(@NotNull enumEntry: KtEnumEntry)
Link copied to clipboard
open fun visitErrorElement(@NotNull element: @NotNull PsiErrorElement)
Link copied to clipboard
fun visitEscapeStringTemplateEntry(@NotNull entry: KtEscapeStringTemplateEntry, data: Void?): Void?
open fun visitEscapeStringTemplateEntry(@NotNull entry: KtEscapeStringTemplateEntry)
Link copied to clipboard
fun visitExpression(@NotNull expression: KtExpression, data: Void?): Void?
open fun visitExpression(@NotNull expression: KtExpression)
Link copied to clipboard
fun visitExpressionWithLabel(@NotNull expression: KtExpressionWithLabel, data: Void?): Void?
open fun visitExpressionWithLabel(@NotNull expression: KtExpressionWithLabel)
Link copied to clipboard
open fun visitFile(@NotNull file: @NotNull PsiFile)

fun visitFile(root: KtFile, languageVersionSettings: LanguageVersionSettings): List<Finding>

Before starting visiting kotlin elements, a check is performed if this rule should be triggered. Pre- and post-visit-hooks are executed before/after the visiting process.

Link copied to clipboard
open fun visitFileAnnotationList(@NotNull fileAnnotationList: KtFileAnnotationList, data: Void?): Void?
Link copied to clipboard
fun visitFinallySection(@NotNull finallySection: KtFinallySection, data: Void?): Void?
open fun visitFinallySection(@NotNull finallySection: KtFinallySection)
Link copied to clipboard
fun visitForExpression(@NotNull expression: KtForExpression, data: Void?): Void?
open fun visitForExpression(@NotNull expression: KtForExpression)
Link copied to clipboard
fun visitFunctionType(@NotNull type: KtFunctionType, data: Void?): Void?
open fun visitFunctionType(@NotNull type: KtFunctionType)
Link copied to clipboard
fun visitIfExpression(@NotNull expression: KtIfExpression, data: Void?): Void?
open fun visitIfExpression(@NotNull expression: KtIfExpression)
Link copied to clipboard
open fun visitImportAlias(@NotNull importAlias: KtImportAlias, data: Void?): Void?
open fun visitImportAlias(@NotNull importAlias: KtImportAlias)
Link copied to clipboard
fun visitImportDirective(@NotNull importDirective: KtImportDirective, data: Void?): Void?
open fun visitImportDirective(@NotNull importDirective: KtImportDirective)
Link copied to clipboard
fun visitImportList(@NotNull importList: KtImportList, data: Void?): Void?
open fun visitImportList(@NotNull importList: KtImportList)
Link copied to clipboard
fun visitInitializerList(@NotNull list: KtInitializerList, data: Void?): Void?
open fun visitInitializerList(@NotNull list: KtInitializerList)
Link copied to clipboard
open fun visitIntersectionType(@NotNull intersectionType: KtIntersectionType, data: Void?): Void?
open fun visitIntersectionType(@NotNull intersectionType: KtIntersectionType)
Link copied to clipboard
fun visitIsExpression(@NotNull expression: KtIsExpression, data: Void?): Void?
open fun visitIsExpression(@NotNull expression: KtIsExpression)
Link copied to clipboard
fun visitKtCommonFile(@NotNull file: KtCommonFile): Void?
Link copied to clipboard
fun visitKtElement(@NotNull element: KtElement, data: Void?): Void?
open fun visitKtElement(@NotNull element: KtElement)
Link copied to clipboard
fun visitKtFile(@NotNull file: KtFile, data: Void?): Void?
open fun visitKtFile(@NotNull file: KtFile)
Link copied to clipboard
fun visitLabeledExpression(@NotNull expression: KtLabeledExpression, data: Void?): Void?
open fun visitLabeledExpression(@NotNull expression: KtLabeledExpression)
Link copied to clipboard
fun visitLambdaExpression(@NotNull expression: KtLambdaExpression, data: Void?): Void?
open fun visitLambdaExpression(@NotNull lambdaExpression: KtLambdaExpression)
Link copied to clipboard
fun visitLiteralStringTemplateEntry(@NotNull entry: KtLiteralStringTemplateEntry, data: Void?): Void?
open fun visitLiteralStringTemplateEntry(@NotNull entry: KtLiteralStringTemplateEntry)
Link copied to clipboard
fun visitLoopExpression(@NotNull loopExpression: KtLoopExpression, data: Void?): Void?
open fun visitLoopExpression(@NotNull loopExpression: KtLoopExpression)
Link copied to clipboard
fun visitModifierList(@NotNull list: KtModifierList, data: Void?): Void?
open fun visitModifierList(@NotNull list: KtModifierList)
Link copied to clipboard
fun visitNamedDeclaration(@NotNull declaration: KtNamedDeclaration, data: Void?): Void?
open fun visitNamedDeclaration(@NotNull declaration: KtNamedDeclaration)
Link copied to clipboard
fun visitNamedFunction(@NotNull function: KtNamedFunction, data: Void?): Void?
open fun visitNamedFunction(@NotNull function: KtNamedFunction)
Link copied to clipboard
fun visitNullableType(@NotNull nullableType: KtNullableType, data: Void?): Void?
open fun visitNullableType(@NotNull nullableType: KtNullableType)
Link copied to clipboard
fun visitObjectDeclaration(@NotNull declaration: KtObjectDeclaration, data: Void?): Void?
open fun visitObjectDeclaration(@NotNull declaration: KtObjectDeclaration)
Link copied to clipboard
fun visitObjectLiteralExpression(@NotNull expression: KtObjectLiteralExpression, data: Void?): Void?
open fun visitObjectLiteralExpression(@NotNull expression: KtObjectLiteralExpression)
Link copied to clipboard
open fun visitOuterLanguageElement(@NotNull element: @NotNull OuterLanguageElement)
Link copied to clipboard
open fun visitPackageDirective(@NotNull directive: KtPackageDirective, data: Void?): Void?
open fun visitPackageDirective(@NotNull directive: KtPackageDirective)
Link copied to clipboard
fun visitParameter(@NotNull parameter: KtParameter, data: Void?): Void?
open fun visitParameter(@NotNull parameter: KtParameter)
Link copied to clipboard
fun visitParameterList(@NotNull list: KtParameterList, data: Void?): Void?
open fun visitParameterList(@NotNull list: KtParameterList)
Link copied to clipboard
fun visitParenthesizedExpression(@NotNull expression: KtParenthesizedExpression, data: Void?): Void?
open fun visitParenthesizedExpression(@NotNull expression: KtParenthesizedExpression)
Link copied to clipboard
open fun visitPlainText(@NotNull content: @NotNull PsiPlainText)
Link copied to clipboard
open fun visitPlainTextFile(@NotNull file: @NotNull PsiPlainTextFile)
Link copied to clipboard
fun visitPostfixExpression(@NotNull expression: KtPostfixExpression, data: Void?): Void?
open fun visitPostfixExpression(@NotNull expression: KtPostfixExpression)
Link copied to clipboard
fun visitPrefixExpression(@NotNull expression: KtPrefixExpression, data: Void?): Void?
open fun visitPrefixExpression(@NotNull expression: KtPrefixExpression)
Link copied to clipboard
fun visitPrimaryConstructor(@NotNull constructor: KtPrimaryConstructor, data: Void?): Void?
open fun visitPrimaryConstructor(@NotNull constructor: KtPrimaryConstructor)
Link copied to clipboard
fun visitProperty(@NotNull property: KtProperty, data: Void?): Void?
open fun visitProperty(@NotNull property: KtProperty)
Link copied to clipboard
fun visitPropertyAccessor(@NotNull accessor: KtPropertyAccessor, data: Void?): Void?
open fun visitPropertyAccessor(@NotNull accessor: KtPropertyAccessor)
Link copied to clipboard
fun visitPropertyDelegate(@NotNull delegate: KtPropertyDelegate, data: Void?): Void?
open fun visitPropertyDelegate(@NotNull delegate: KtPropertyDelegate)
Link copied to clipboard
fun visitQualifiedExpression(@NotNull expression: KtQualifiedExpression, data: Void?): Void?
open fun visitQualifiedExpression(@NotNull expression: KtQualifiedExpression)
Link copied to clipboard
fun visitReferenceExpression(@NotNull expression: KtReferenceExpression, data: Void?): Void?
open fun visitReferenceExpression(@NotNull expression: KtReferenceExpression)
Link copied to clipboard
fun visitReturnExpression(@NotNull expression: KtReturnExpression, data: Void?): Void?
open fun visitReturnExpression(@NotNull expression: KtReturnExpression)
Link copied to clipboard
fun visitSafeQualifiedExpression(@NotNull expression: KtSafeQualifiedExpression, data: Void?): Void?
open fun visitSafeQualifiedExpression(@NotNull expression: KtSafeQualifiedExpression)
Link copied to clipboard
fun visitScript(@NotNull script: KtScript, data: Void?): Void?
open fun visitScript(@NotNull script: KtScript)
Link copied to clipboard
open fun visitScriptInitializer(@NotNull initializer: KtScriptInitializer, data: Void?): Void?
open fun visitScriptInitializer(@NotNull initializer: KtScriptInitializer)
Link copied to clipboard
fun visitSecondaryConstructor(@NotNull constructor: KtSecondaryConstructor, data: Void?): Void?
open fun visitSecondaryConstructor(@NotNull constructor: KtSecondaryConstructor)
Link copied to clipboard
fun visitSelfType(@NotNull type: KtSelfType, data: Void?): Void?
open fun visitSelfType(@NotNull type: KtSelfType)
Link copied to clipboard
fun visitSimpleNameExpression(@NotNull expression: KtSimpleNameExpression, data: Void?): Void?
open fun visitSimpleNameExpression(@NotNull expression: KtSimpleNameExpression)
Link copied to clipboard
fun visitSimpleNameStringTemplateEntry(@NotNull entry: KtSimpleNameStringTemplateEntry, data: Void?): Void?
open fun visitSimpleNameStringTemplateEntry(@NotNull entry: KtSimpleNameStringTemplateEntry)
Link copied to clipboard
open fun visitStringInterpolationPrefix(@NotNull prefix: KtStringInterpolationPrefix, data: Void?): Void?
Link copied to clipboard
fun visitStringTemplateEntry(@NotNull entry: KtStringTemplateEntry, data: Void?): Void?
open fun visitStringTemplateEntry(@NotNull entry: KtStringTemplateEntry)
Link copied to clipboard
fun visitStringTemplateEntryWithExpression(@NotNull entry: KtStringTemplateEntryWithExpression, data: Void?): Void?
open fun visitStringTemplateEntryWithExpression(@NotNull entry: KtStringTemplateEntryWithExpression)
Link copied to clipboard
fun visitStringTemplateExpression(@NotNull expression: KtStringTemplateExpression, data: Void?): Void?
open fun visitStringTemplateExpression(@NotNull expression: KtStringTemplateExpression)
Link copied to clipboard
fun visitSuperExpression(@NotNull expression: KtSuperExpression, data: Void?): Void?
open fun visitSuperExpression(@NotNull expression: KtSuperExpression)
Link copied to clipboard
fun visitSuperTypeCallEntry(@NotNull call: KtSuperTypeCallEntry, data: Void?): Void?
open fun visitSuperTypeCallEntry(@NotNull call: KtSuperTypeCallEntry)
Link copied to clipboard
fun visitSuperTypeEntry(@NotNull specifier: KtSuperTypeEntry, data: Void?): Void?
open fun visitSuperTypeEntry(@NotNull specifier: KtSuperTypeEntry)
Link copied to clipboard
fun visitSuperTypeList(@NotNull list: KtSuperTypeList, data: Void?): Void?
open fun visitSuperTypeList(@NotNull list: KtSuperTypeList)
Link copied to clipboard
fun visitSuperTypeListEntry(@NotNull specifier: KtSuperTypeListEntry, data: Void?): Void?
open fun visitSuperTypeListEntry(@NotNull specifier: KtSuperTypeListEntry)
Link copied to clipboard
fun visitThisExpression(@NotNull expression: KtThisExpression, data: Void?): Void?
open fun visitThisExpression(@NotNull expression: KtThisExpression)
Link copied to clipboard
fun visitThrowExpression(@NotNull expression: KtThrowExpression, data: Void?): Void?
open fun visitThrowExpression(@NotNull expression: KtThrowExpression)
Link copied to clipboard
fun visitTryExpression(@NotNull expression: KtTryExpression, data: Void?): Void?
open fun visitTryExpression(@NotNull expression: KtTryExpression)
Link copied to clipboard
fun visitTypeAlias(@NotNull typeAlias: KtTypeAlias, data: Void?): Void?
open fun visitTypeAlias(@NotNull typeAlias: KtTypeAlias)
Link copied to clipboard
fun visitTypeArgumentList(@NotNull typeArgumentList: KtTypeArgumentList, data: Void?): Void?
open fun visitTypeArgumentList(@NotNull typeArgumentList: KtTypeArgumentList)
Link copied to clipboard
fun visitTypeConstraint(@NotNull constraint: KtTypeConstraint, data: Void?): Void?
open fun visitTypeConstraint(@NotNull constraint: KtTypeConstraint)
Link copied to clipboard
fun visitTypeConstraintList(@NotNull list: KtTypeConstraintList, data: Void?): Void?
open fun visitTypeConstraintList(@NotNull list: KtTypeConstraintList)
Link copied to clipboard
fun visitTypeParameter(@NotNull parameter: KtTypeParameter, data: Void?): Void?
open fun visitTypeParameter(@NotNull parameter: KtTypeParameter)
Link copied to clipboard
fun visitTypeParameterList(@NotNull list: KtTypeParameterList, data: Void?): Void?
open fun visitTypeParameterList(@NotNull list: KtTypeParameterList)
Link copied to clipboard
fun visitTypeProjection(@NotNull typeProjection: KtTypeProjection, data: Void?): Void?
open fun visitTypeProjection(@NotNull typeProjection: KtTypeProjection)
Link copied to clipboard
fun visitTypeReference(@NotNull typeReference: KtTypeReference, data: Void?): Void?
open fun visitTypeReference(@NotNull typeReference: KtTypeReference)
Link copied to clipboard
fun visitUnaryExpression(@NotNull expression: KtUnaryExpression, data: Void?): Void?
open fun visitUnaryExpression(@NotNull expression: KtUnaryExpression)
Link copied to clipboard
fun visitUserType(@NotNull type: KtUserType, data: Void?): Void?
open fun visitUserType(@NotNull type: KtUserType)
Link copied to clipboard
fun visitValueArgumentList(@NotNull list: KtValueArgumentList, data: Void?): Void?
open fun visitValueArgumentList(@NotNull list: KtValueArgumentList)
Link copied to clipboard
fun visitWhenConditionInRange(@NotNull condition: KtWhenConditionInRange, data: Void?): Void?
open fun visitWhenConditionInRange(@NotNull condition: KtWhenConditionInRange)
Link copied to clipboard
fun visitWhenConditionIsPattern(@NotNull condition: KtWhenConditionIsPattern, data: Void?): Void?
open fun visitWhenConditionIsPattern(@NotNull condition: KtWhenConditionIsPattern)
Link copied to clipboard
fun visitWhenConditionWithExpression(@NotNull condition: KtWhenConditionWithExpression, data: Void?): Void?
open fun visitWhenConditionWithExpression(@NotNull condition: KtWhenConditionWithExpression)
Link copied to clipboard
fun visitWhenEntry(@NotNull ktWhenEntry: KtWhenEntry, data: Void?): Void?
open fun visitWhenEntry(@NotNull ktWhenEntry: KtWhenEntry)
Link copied to clipboard
fun visitWhenExpression(@NotNull expression: KtWhenExpression, data: Void?): Void?
open fun visitWhenExpression(@NotNull expression: KtWhenExpression)
Link copied to clipboard
fun visitWhileExpression(@NotNull expression: KtWhileExpression, data: Void?): Void?
open fun visitWhileExpression(@NotNull expression: KtWhileExpression)
Link copied to clipboard
open fun visitWhiteSpace(@NotNull space: @NotNull PsiWhiteSpace)