Kotlin

Kotlin Static Code Analysis Tool – Ktlint

Kotlin is a JVM based statically typed programming language developed by Jetbrains. Later Google introduced this primarily for Android app development. Using Kotlin developers can write codes faster in a better way. Like any other programming language, Kotlin also defined a set of rules on how to use it in a clean way so that the application written using the language will result in a great success in terms of performance.

Static Code Analysis

Static code analysis is an important step in the development cycle of a software project. If we are building an application on a larger scale and multiple contributors are involved in it then it is definitely required to perform code analysis so that we can avoid a lot of issues and bugs in an early stage of the project and can improve the readability of the source code of the project. If you have integrated the CI/CD, then the static code analysis runs in the TEST stage and check the new build for bugs and vulnerabilities.

Code Analysis Tools for Kotlin

For Java-based applications, the developers might have implemented or aware of static code analyzing tools like PMD, Findbugs, Checkstyle, etc. Kotlin is using some other tools because the syntax is entirely different than Java. Some of the tools used for analyzing Kotlin code are Ktlint, detekt, and Jetbrains inspection plugin. In this discussion we are checking how to implement Ktlint in your Android application for analyzing the code you have written.

What is Ktlint?

“An anti-bikeshedding Kotlin linter with built-in formatter”

Ktlint is a static code analysis tool developed for Kotin programming language. It will analyze the code you have written in your project and check whether the code is aligned with the defined Kotlin guidelines/rules or not. As per the definition of Ktlint, it has two processes, Linting and Formatting. The Linter will analyze the code for issues and the Formatter will help to auto-format those issues reported after the linting process. 

Ktlint provides 3 ways to run the tool.

  • Command-line tool
  • Gradle task
  • Maven plugin

Lets check how Gradle integration can be done.

There are a few community-driven plugins are available. We can install those plugins and run the tool. The plugins are listed below.

jlleitschuh/ktlint-gradle

Automatically creates check and format tasks for project Kotlin sources, supports different kotlin plugins and Gradle build caching.

jeremymailen/kotlinter-gradle

Featuring incremental build support, file reports, .kt & .kts source support.

diffplug/spotless

Spotless is not really a plugin, it’s a standalone project that happens to have a built-in ktlint support. In addition to linting/formatting kotlin code it allows you to keep license headers, markdown documentation, etc. 

If we are not using the plugins, then, add the below to the build.gradle

 

apply plugin: "java"

repositories {

    jcenter()

}

configurations {

    ktlint

}


dependencies {

    ktlint "com.pinterest:ktlint:<replace this with the latest version>"

}


task ktlint(type: JavaExec, group: "verification") {

    description = "Check Kotlin code style."

    main = "com.pinterest.ktlint.Main"

    classpath = configurations.ktlint

    args "src/**/*.kt"}

check.dependsOn ktlint


task ktlintFormat(type: JavaExec, group: "formatting") {

    description = "Fix Kotlin code style deviations."

    main = "com.pinterest.ktlint.Main"

    classpath = configurations.ktlint

    args "-F", "src/**/*.kt"

}

 

For using this, Run the below command in the command line

$ gradle ktlint

This will run the ktlint tasks and will show us the results. This is the command to run the linting process. If there are any errors then this show the build failed and list out the exact errors with proper descriptions. The errors will be readable so that the developer can understand the issues quite easily and do the action required to correct that.

Run this command to auto-fix the errors

$ gradle ktlintFormat

This command will run the formatting process and will help the developer to automatically fix errors, if this is not helping to complete the fixes then the developer will have to fix those manually and run the linter again.

This is how we can integrate and run Ktlint in our Android project and analyze the codebase. Some of the rules this tool will check as part of the analysis are listed below.

  • Check for indentation
  • No semicolons
  • Unused imports
  • No Consecutive blank lines 
  • No trailing white spaces
  • No unit returns
  • No empty class bodies
  • Consistent string templates
  • Consistent order of modifiers
  • Consistent spacing

To know more about Ktlint and the rules please go to this link.

Are you looking to develop a mobile app?

Talk to our experts now and let us be your innovation partner!

Check out our success stories to know more about it.