Android : Code formatting trong Kotlin với Ktlint
Khi chúng ta nói vể lint, nhiều developer nghĩ nó liên quan đến code style guide. Chà!, nhưng thực chất không chỉ có thế Linting is the process of analyzing code for potential errors. Là một Android developer, chúng ta sử dụng ngôn ngữ kotlin để phát triển ứng dụng của mình, nhưng làm sao ...
Khi chúng ta nói vể lint, nhiều developer nghĩ nó liên quan đến code style guide. Chà!, nhưng thực chất không chỉ có thế
Linting is the process of analyzing code for potential errors.
Là một Android developer, chúng ta sử dụng ngôn ngữ kotlin để phát triển ứng dụng của mình, nhưng làm sao để đoạn code của chúng ta clean và dễ đang để đọc? Có thể vẫn có nhiều người trong chúng ta vẫn bị ảnh hưởng bởi Java Code Style hay một số học theo Kotlin Style Guide
Ktlin có thể là trợ lý của chúng ta, nó được tạo ra để trở thành một định dạng viết tiêu chuẩn của Kotlin với sự đơn giản, mở rộng và có một công đồng hoạt động tích cực. Vậy làm thể nào để chúng ta sử dụng Ktlin trong project của mình?
Chúng ta nên đọc tài liệu trên Ktlint, có rất nhiều cách để cài đặt Ktlint, ở bài viết này mình chỉ giới thiệu 1 cách
Cài đặt
Add Plugin cho build.grade.kts của bạn
plugins { id("org.jlleitschuh.gradle.ktlint") version Versions.ktlintPlugin }
Sau đó setup các thuộc tính trong Ktlin
ktlint { version.set(Versions.ktlint) debug.set(true) verbose.set(true) android.set(false) outputToConsole.set(true) reporters.set(setOf(ReporterType.PLAIN,ReporterType.CHECKSTYLE)) ignoreFailures.set(true) kotlinScriptAdditionalPaths { include(fileTree("scripts/")) } filter { exclude("**/generated/**") include("**/kotlin/**") } }
Thêm ktlin cho các subproject
subprojects { apply(plugin = "org.jlleitschuh.gradle.ktlint") // Optionally configure plugin ktlint { debug = true } }
Ví dụ chi tiết bạn có thể tham khảo ví dụ sau đây
ext.ReporterType = org.jlleitschuh.gradle.ktlint.reporter.ReporterType apply plugin: "org.jlleitschuh.gradle.ktlint" ktlint { version = "0.34.2" debug = true verbose = true android = false outputToConsole = true reporters = [ReporterType.PLAIN, ReporterType.CHECKSTYLE] ignoreFailures = true enableExperimentalRules = true additionalEditorconfigFile = file("/some/additional/.editorconfig") kotlinScriptAdditionalPaths { include fileTree("scripts/") } filter { exclude("**/generated/**") include("**/kotlin/**") } } buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "org.jlleitschuh.gradle:ktlint-gradle:8.2.0" } } allprojects { /* no need configuration */ } subprojects { apply plugin: "org.jlleitschuh.gradle.ktlint" } task clean(type: Delete) { delete rootProject.buildDir }
import org.jlleitschuh.gradle.ktlint.reporter.ReporterType plugins { id("org.jlleitschuh.gradle.ktlint") version Versions.ktlintPlugin // "8.2.0" } ktlint { version.set(Versions.ktlint) // "0.34.2" debug.set(true) verbose.set(true) android.set(false) outputToConsole.set(true) reporters.set(setOf(ReporterType.PLAIN, ReporterType.CHECKSTYLE)) ignoreFailures.set(true) kotlinScriptAdditionalPaths { include(fileTree("scripts/")) } filter { exclude("**/generated/**") include("**/kotlin/**") } } buildscript { /* no need configuration */ } allprojects { /* no need configuration */ } subprojects { apply(plugin = "org.jlleitschuh.gradle.ktlint") } tasks.register("clean", Delete::class) { delete(rootProject.buildDir) }
Kiểm tra lại
Sau khi confige xong bạn có thể mở terminal và chay lệnh ./gradlew ktlintCheck để thấy các cảnh báo lỗi được tìm thấy
Khi chạy ./gradlew ktlintCheck nó sẽ hiển thị một số lỗi định dạng. Không chỉ có thế, nó sẽ hiển thị cho bạn chính xác lỗi gặp phải, bạn có thể tự động sửa lỗi bằng cách chạy lệnh: ./gradlew ktlintFormat
Tham khảo
https://proandroiddev.com/simplify-android-kotlin-code-with-ktlint-20c702108901