Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Static Code Analysis Tools

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
Avatar for Dima Dima
August 30, 2018

Static Code Analysis Tools

Avatar for Dima

Dima

August 30, 2018

More Decks by Dima

Other Decks in Programming

Transcript

  1. Static Code Analysis Tools configurations { ktlint } dependencies {

    ktlint “com.github.shyiko:ktlint:0.26.0” }
  2. Static Code Analysis Tools configurations { ktlint } dependencies {

    ktlint “com.github.shyiko:ktlint:0.26.0” } task ktlint(type: JavaExec, group: "verification") { description = "Check Kotlin code style." main = "com.github.shyiko.ktlint.Main" classpath = configurations.ktlint args "${project.rootDir}/**/*.kt" args "--reporter=plain" args "--reporter=checkstyle,output=${rootProject.buildDir}/reports/ktlint.xml" }
  3. Static Code Analysis Tools <?xml version="1.0" encoding="utf-8"?> <checkstyle version=“8.0"> <file

    name=“/Users/dmytrok/AndroidStudioProjects/.../MainActivity.kt”> <error line=“50" column="52" severity="error" message="Unnecessary semicolon" </file> ... </checkstyle>
  4. Static Code Analysis Tools /* ktlint-disable no-wildcard-imports */ import org.koin.standalone.*

    ... /* ktlint-enable no-wildcard-imports */ import com.apollographql.apollo.ApolloCall import com.apollographql.apollo.ApolloClient
  5. Static Code Analysis Tools /* ktlint-disable no-wildcard-imports */ import org.koin.standalone.*

    ... /* ktlint-enable no-wildcard-imports */ import com.apollographql.apollo.ApolloCall import com.apollographql.apollo.ApolloClient import org.koin.core.* // ktlint-disable
  6. Static Code Analysis Tools plugins { id "io.gitlab.arturbosch.detekt" version “1.0.0.RC8”

    } detekt { version = "1.0.0.RC8" defaultProfile { input = "$projectDir" config = "$rootDir/detekt-config.yml" filters = ".*/resources/.*,.*/build/.*" output = "${project.buildDir}/reports/detekt" parallel = true } }
  7. Static Code Analysis Tools ./gradlew detektGenerateConfig —> detekt-config.yml
 autoCorrect: true

    build: maxIssues: 10 weights: # LongParameterList: 1 # style: 1 # comments: 1 style: active: true VarCouldBeVal: active: false WildcardImport: active: true excludeImports: "java.util.*,kotlinx.android.synthetic.*"
  8. Static Code Analysis Tools detekt-checkstyle.xml <checkstyle version="4.3"> <file name=“/Users/dmytrok/AndroidStudioProjects/…/ NetworkClientImpl.kt”>

    <error line="10" column="1" severity="warning" message="org.koin.standalone.* is a wildcard import. Replace it with fully qualified imports." /> </file> </checkstyle>
  9. Applying code style formatters if ./gradlew ktlint --daemon; then echo

    "ktlint found no problems.” exit 0 else fiB
  10. Applying code style formatters if ./gradlew ktlint --daemon; then echo

    "ktlint found no problems.” exit 0 else echo "Ktlint found style problems” echo "ktlintFormat will be launched” if ./gradlew ktlintFormat; then echo "All Style problems were removed” exit 1 else echo 1>&2 "Please fix them by yourself” exit 1 fi fiB
  11. Visualising plugins { id "org.sonarqube" version "2.6.2" } sonarqube {

    properties { property "sonar.host.url", "$sonarUrl" property "sonar.projectName", "Some App" ... } }
  12. Visualising plugins { id "org.sonarqube" version "2.6.2" } sonarqube {

    properties { property "sonar.host.url", "$sonarUrl" property "sonar.projectName", "Some App" } } subprojects { sonarqube { properties { property "sonar.sources", “src/main/java“ ... } } }