This product is not supported for your selected Datadog site. ().
Metadata
ID:kotlin-code-style/multiline-if-else
Language: Kotlin
Severity: Notice
Category: Code Style
Description
This rule enforces the use of curly braces ({}) for if and if/else statements in Kotlin when their bodies span multiple lines. Omitting braces in such cases can introduce ambiguity, making the code’s control flow unclear and potentially leading to logical errors if additional statements are introduced without careful re-evaluation. This practice is crucial for maintaining code readability and preventing the “dangling else” problem, where an else branch might inadvertently associate with the wrong if statement.
How to remediate
To remediate this, always enclose the multiline body of if and else statements within curly braces. This explicit encapsulation clearly defines the scope of the conditional blocks, enhancing code clarity and maintainability. For instance, transform if (condition)\n statement1\n statement2 into if (condition) {\n statement1\n statement2\n}. Applying braces consistently ensures that your code behaves as intended and is easier to understand and debug for other developers.
Arguments
foo: Blah
Non-Compliant Code Examples
if(true)doSomething()elsedoSomethingElse()privatefundoSomethingFunc(){if(1!=2)// A Comment
doSomething()else// Another comment
doSomething()}
Compliant Code Examples
if(true){doSomething()}else{doSomethingElse()}if(true)doSomething()if(true)return1if((now-prev)<CONSTANT_VAL&&!otherCondition// only in special cases
){log.debug("A Log Line")return}if(true){doSomething()doSomethingElse()}else{doSomethingElse()doSomethingElse()doSomethingElse()}
Seamless integrations. Try Datadog Code Security
Datadog Code Security
Try this rule and analyze your code with Datadog Code Security
How to use this rule
1
2
rulesets:- kotlin-code-style # Rules to enforce Kotlin code style.
Create a static-analysis.datadog.yml with the content above at the root of your repository
Use our free IDE Plugins or add Code Security scans to your CI pipelines