Meet detekt เครื่องมือวิเคราะห์โค้ดแบบคงที่สำหรับ ภาษาโปรแกรม Kotlin เยี่ยมชมเว็บไซต์โครงการเพื่อดูคำแนะนำในการติดตั้ง คำอธิบายกฎ ตัวเลือกการกำหนดค่า และอื่นๆ
การวิเคราะห์กลิ่นโค้ดสำหรับโปรเจ็กต์ Kotlin ของคุณ
ชุดกฎที่กำหนดค่าได้สูง
สร้างข้อมูลพื้นฐานเพื่อระงับปัญหาที่มีอยู่สำหรับโครงการเดิม ขณะเดียวกันก็ทำให้แน่ใจว่าไม่มีปัญหาใหม่เกิดขึ้น
ระงับปัญหาในไฟล์ต้นฉบับโดยใช้คำอธิบายประกอบ @Suppress
รองรับรูปแบบรายงานที่แตกต่างกัน: HTML, Markdown, SARIF, XML (Checkstyle) และรายงานแบบกำหนดเอง
ขยายการตรวจจับด้วยชุดกฎและรายงานที่กำหนดเอง
รายงานความซับซ้อนตามบรรทัดของโค้ด ความซับซ้อนแบบไซโคลมาติก และจำนวนกลิ่นของโค้ด
การรวมบุคคลที่หนึ่งกับ Gradle กับปลั๊กอิน Gradle ของเรา
ชุมชนปลั๊กอินของบุคคลที่สามที่เพิ่มกฎและคุณสมบัติเพิ่มเติมเพื่อตรวจจับ
บันทึกการเปลี่ยนแปลงและคำแนะนำในการโยกย้าย
ตัวเลือก CLI ที่มีให้เลือก
ชุดกฎและคำอธิบายกฎ
การเขียนกฎที่กำหนดเองและขยายการตรวจสอบ
ระงับปัญหาในโค้ด
ระงับปัญหาผ่านไฟล์พื้นฐาน
กำลังกำหนดค่า detekt
ตัวอย่างการรวม Gradle ตัวอย่าง:
หลายโครงการ (Kotlin DSL)
โครงการเดียว (Groovy DSL)
โครงการเดียว (ปลั๊กอิน Maven อย่างไม่เป็นทางการ)
curl -sSLO https://github.com/detekt/detekt/releases/download/v[version]/detekt-cli-[version]-all.jar java -jar detekt-cli-[เวอร์ชั่น]-all.jar --help
คุณสามารถหาวิธีอื่นๆ ในการติดตั้ง detekt ได้ที่นี่
ปลั๊กอิน { id("io.gitlab.arturbosch.detekt") เวอร์ชัน "[เวอร์ชัน]"} ที่เก็บ { มาเวนเซ็นทรัล() - ตรวจจับ { buildUponDefaultConfig = true // preconfigure defaultsallRules = false // เปิดใช้งานทั้งหมดที่มีอยู่ (แม้จะไม่เสถียร) Rules.config.setFrom("$projectDir/config/detekt.yml") // ชี้ไปที่การกำหนดค่าที่กำหนดเองของคุณซึ่งกำหนดกฎที่จะรัน เขียนทับพฤติกรรมเริ่มต้น = file("$projectDir/config/baseline.xml") // วิธีการระงับปัญหาก่อนที่จะแนะนำ detekt} Tasks.withType().configureEach { รายงาน { html.required.set(true) // สังเกตการค้นพบในเบราว์เซอร์ของคุณด้วยโครงสร้างและโค้ด snippetsxml.required.set(true) // checkstyle เช่นรูปแบบส่วนใหญ่สำหรับการบูรณาการเช่น Jenkinssarif.required.set(true) // รูปแบบ SARIF มาตรฐาน ( https://sarifweb.azurewebsites.net/) เพื่อรองรับการทำงานร่วมกับ GitHub Code Scanningmd.required.set(true) // simple Markdown format} }// Groovy DSLtasks.withType(Detekt).configureEach { jvmTarget = "1.8"} งาน.withType(DetektCreateBaselineTask).configureEach { jvmTarget = "1.8"}// หรือ// Kotlin DSLtasks.withType ().configureEach { jvmTarget = "1.8"} Tasks.withType ().configureEach { jvmTarget = "1.8"}
ดู Maven Central สำหรับการเผยแพร่และ Sonatype สำหรับสแนปช็อต
หากคุณต้องการใช้เวอร์ชัน SNAPSHOT คุณสามารถค้นหาข้อมูลเพิ่มเติมได้ในหน้าเอกสารประกอบนี้
Gradle 6.8.3+ เป็นข้อกำหนดขั้นต่ำ อย่างไรก็ตาม เวอร์ชันที่แนะนำร่วมกับเวอร์ชันที่แนะนำของเครื่องมืออื่นๆ ได้แก่:
ตรวจจับเวอร์ชัน | เกรเดิล | คอตลิน | เอจีพี | ระดับเป้าหมาย Java | เจดีเค เวอร์ชันแม็กซ์ |
---|---|---|---|---|---|
1.23.7 | 8.10 | 2.0.10 | 8.5.2 | 1.8 | 21 |
รายการเวอร์ชันที่แนะนำสำหรับเวอร์ชัน detekt ก่อนหน้าแสดงอยู่ที่นี่
detekt เองได้จัดเตรียม wrapper บน ktlint เป็นชุดกฎ formatting
ซึ่งสามารถเพิ่มลงในการกำหนดค่า Gradle ได้อย่างง่ายดาย:
การพึ่งพา { detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:[เวอร์ชั่น]") -
ในทำนองเดียวกัน มีชุดกฎพิเศษสำหรับ detekt จาก detekt:
การพึ่งพา { detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-libraries:[เวอร์ชั่น]") detektPlugins("io.gitlab.arturbosch.detekt:detekt-rules-ruleauthors:[เวอร์ชั่น]") -
สำหรับข้อมูลเพิ่มเติม โปรดเยี่ยมชม Detekt Marketplace
ในทำนองเดียวกันคุณสามารถเพิ่มส่วนขยายที่กำหนดเองลงใน detekt ได้
ดูการมีส่วนร่วม
ขอบคุณทุกคนที่มีส่วนร่วมในการ detekt!
ตามที่กล่าวไว้ใน...
เพื่อ Detekt 2.0 และมากกว่านั้น!
droidcon London 2021 - Detekt - สถานะของสหภาพ
KotlinConf 2018 - รหัส Kotlin ที่ปลอดภัย - เครื่องมือวิเคราะห์แบบคงที่สำหรับ Kotlin โดย Marvin Ramin
droidcon NYC 2018 - การวิเคราะห์โค้ดแบบคงที่สำหรับ Kotlin
Kotlin เกี่ยวกับเครื่องมือคุณภาพโค้ด - โดย @vanniktech Slides Presentation
การรวม detekt ในเวิร์กโฟลว์
ตรวจสอบคุณภาพของโค้ด Kotlin
เครื่องมือวิเคราะห์แบบคงที่ Kotlin
คุณยังได้กลิ่นอยู่ไหม: การศึกษาเปรียบเทียบระหว่างภาษา Java และ Kotlin โดย Flauzino และคณะ
ป้องกันการต่อต้านรูปแบบซอฟต์แวร์ด้วย Detekt
บูรณาการ:
การบูรณาการ IntelliJ
บูรณาการ SonarQube
การบูรณาการ TCA (Tencent CodeAnalysis)
โคดาซี
ปลั๊กอิน Gradle ที่กำหนดค่า Error Prone, Checkstyle, PMD, CPD, Lint, Detekt & Ktlint
Violations Lib เป็นไลบรารี Java สำหรับการแยกวิเคราะห์ไฟล์รายงาน เช่น การวิเคราะห์โค้ดแบบคงที่
sputnik เป็นเครื่องมือฟรีสำหรับการตรวจสอบโค้ดแบบคงที่ และให้การสนับสนุน detekt
ปลั๊กอิน Detekt Maven ที่ล้อมรอบ Detekt CLI
ปลั๊กอิน Detekt Bazel ที่ล้อมรอบ Detekt CLI
ปลั๊กอิน Gradle ที่ช่วยอำนวยความสะดวกในการตรวจสอบ GitHub PR และแสดงความคิดเห็นเกี่ยวกับการละเมิดโดยอัตโนมัติ
ปัจจัยโค้ด
GitHub Action: ตรวจจับทั้งหมด
GitHub Action: ตั้งค่าการตรวจจับ
กฎและรายงานที่กำหนดเองจากบุคคลที่สามสามารถพบได้ใน Detekt Marketplace ของเรา
JetBrains - การสร้าง IntelliJ + Kotlin
PMD & Checkstyle & ktlint - แนวคิดสำหรับค่าเกณฑ์และกฎสไตล์