นอกจากการทดสอบการสร้างเพื่อให้แน่ใจว่าแอปเป็นไปตามข้อกำหนดด้านฟังก์ชันการทำงานแล้ว คุณยังควรเรียกใช้โค้ดผ่านเครื่องมือ Lint ด้วยเพื่อให้แน่ใจว่าโค้ดไม่มีปัญหาด้านโครงสร้าง เครื่องมือ Lint ช่วยค้นหาโค้ดที่มีโครงสร้างไม่ดีซึ่งอาจส่งผลต่อความเสถียรและประสิทธิภาพของแอป Android รวมถึงทำให้ดูแลรักษาโค้ดได้ยากขึ้น ขอแนะนําอย่างยิ่งให้คุณแก้ไขข้อผิดพลาดที่ Lint ตรวจพบก่อนเผยแพร่แอป
เช่น หากไฟล์ทรัพยากร XML มีเนมสเปซที่ไม่ได้ใช้ การดำเนินการนี้จะใช้พื้นที่และต้องมีการประมวลผลที่ไม่จำเป็น ปัญหาด้านโครงสร้างอื่นๆ เช่น การใช้องค์ประกอบที่เลิกใช้งานแล้วหรือการเรียก API ซึ่งเวอร์ชัน API เป้าหมายไม่รองรับ อาจส่งผลให้โค้ดทำงานอย่างไม่ถูกต้อง Lint ช่วยแก้ปัญหาเหล่านี้ได้
นอกจากนี้ คุณยังเพิ่มคำอธิบายประกอบลงในโค้ดเพื่อปรับปรุงประสิทธิภาพการตรวจสอบโค้ดได้ด้วย
ภาพรวม
Android Studio มีเครื่องมือสแกนโค้ดที่เรียกว่า lint ซึ่งช่วยคุณระบุและแก้ไขปัญหาเกี่ยวกับคุณภาพเชิงโครงสร้างของโค้ดได้โดยไม่ต้องเรียกใช้แอปหรือเขียนกรณีทดสอบ ปัญหาแต่ละอย่างที่เครื่องมือตรวจพบจะได้รับการรายงานพร้อมข้อความอธิบายและระดับความรุนแรง เพื่อให้คุณจัดลําดับความสําคัญของสิ่งที่ต้องปรับปรุง นอกจากนี้ คุณยังลดระดับความรุนแรงของปัญหาเพื่อละเว้นปัญหาที่ไม่เกี่ยวข้องกับโปรเจ็กต์ หรือเพิ่มระดับความรุนแรงเพื่อไฮไลต์ปัญหาที่เฉพาะเจาะจงได้ด้วย
เครื่องมือ Lint จะตรวจสอบไฟล์แหล่งที่มาของโปรเจ็กต์ Android เพื่อหาข้อบกพร่องที่อาจเกิดขึ้นและปรับปรุงเพื่อเพิ่มประสิทธิภาพ ความถูกต้อง ความปลอดภัย ประสิทธิภาพการทำงาน ความสามารถในการใช้งาน การช่วยเหลือพิเศษ และการปรับให้เป็นสากล เมื่อใช้ Android Studio ระบบจะเรียกใช้การตรวจสอบ Lint และ IDE ที่กําหนดค่าไว้เมื่อคุณสร้างแอป อย่างไรก็ตาม คุณสามารถเรียกใช้การตรวจสอบด้วยตนเองหรือเรียกใช้ Lint จากบรรทัดคําสั่งตามที่อธิบายไว้ในหน้านี้
เครื่องมือ Lint ในตัวจะตรวจสอบโค้ดขณะที่คุณใช้ Android Studio คุณดูคำเตือนและข้อผิดพลาดได้ 2 วิธีดังนี้
- เป็นข้อความป๊อปอัปในหน้าต่างเครื่องมือแก้ไข เมื่อ Lint พบปัญหา ระบบจะไฮไลต์โค้ดที่เป็นปัญหาเป็นสีเหลือง สำหรับปัญหาร้ายแรงกว่านั้น ระบบจะขีดเส้นใต้โค้ดด้วยสีแดง
- ในหน้าต่างผลการตรวจสอบของ Lint เมื่อคุณคลิกโค้ด > ตรวจสอบโค้ด
หมายเหตุ: เมื่อคอมไพล์โค้ดใน Android Studio แล้ว การตรวจสอบโค้ด IntelliJ เพิ่มเติมจะทำงานเพื่อปรับปรุงการตรวจสอบโค้ด อัปเดต Android Studio เป็นเวอร์ชันล่าสุดอยู่เสมอเพื่อให้แน่ใจว่ามีกฎและการตรวจสอบ lint เวอร์ชันล่าสุด
รูปที่ 1 แสดงวิธีที่เครื่องมือ Lint ประมวลผลไฟล์ซอร์สโค้ดของแอป
- ไฟล์ต้นทางของแอป
- ไฟล์ต้นฉบับประกอบด้วยไฟล์ต่างๆ ที่รวมอยู่ในโปรเจ็กต์ Android ซึ่งได้แก่ ไฟล์ Kotlin, Java, XML, ไอคอน และไฟล์การกำหนดค่า ProGuard
lint.xml
ไฟล์- ไฟล์การกําหนดค่าที่คุณสามารถใช้เพื่อระบุการตรวจสอบ Lint ที่ต้องการยกเว้น และปรับแต่งระดับความรุนแรงของปัญหา
- เครื่องมือ Lint
- เครื่องมือสแกนโค้ดแบบคงที่ที่คุณเรียกใช้ได้ในโปรเจ็กต์ Android จากบรรทัดคำสั่งหรือใน Android Studio เครื่องมือ Lint จะตรวจหาปัญหาเกี่ยวกับโครงสร้างโค้ดที่อาจส่งผลต่อคุณภาพและประสิทธิภาพของแอป Android
- ผลการตรวจสอบ Lint
- คุณสามารถดูผลลัพธ์จาก Lint ได้ในคอนโซลหรือหน้าต่างผลการตรวจสอบใน Android Studio หากคุณเรียกใช้
lint
จากบรรทัดคำสั่ง ระบบจะเขียนผลลัพธ์ลงในโฟลเดอร์build/
ดูรายละเอียดเพิ่มเติมได้ที่ส่วนการตรวจสอบด้วยตนเอง
เรียกใช้ Lint จากบรรทัดคำสั่ง
หากคุณใช้ Android Studio หรือ Gradle ให้ใช้ Gradle wrapper เพื่อเรียกใช้งาน lint
สำหรับโปรเจ็กต์โดยป้อนคำสั่งใดคำสั่งหนึ่งต่อไปนี้จากไดเรกทอรีรูทของโปรเจ็กต์
หมายเหตุ: อัปเดตปลั๊กอิน Android Gradle เป็นเวอร์ชันล่าสุดอยู่เสมอเพื่อใช้กฎ Lint เวอร์ชันล่าสุด
- บน Windows:
gradlew lint
- ใน Linux หรือ macOS ให้ทำดังนี้
./gradlew lint
คุณควรเห็นเอาต์พุตที่คล้ายกับตัวอย่างต่อไปนี้
> Task :app:lintDebug Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results-debug.html
เมื่อเครื่องมือ Lint ตรวจสอบเสร็จแล้ว เครื่องมือจะแสดงเส้นทางไปยังรายงาน Lint ในเวอร์ชัน XML และ HTML จากนั้นไปที่รายงาน HTML และเปิดในเบราว์เซอร์ ดังที่แสดงในรูปที่ 2
หากโปรเจ็กต์มีตัวแปรของบิลด์ Lint จะตรวจสอบเฉพาะตัวแปรเริ่มต้น หากต้องการเรียกใช้ Lint กับตัวแปรอื่น คุณต้องใส่ชื่อตัวแปรเป็นตัวพิมพ์ใหญ่และใส่ lint
ไว้หน้าชื่อ
./gradlew lintRelease
หมายเหตุ: Lint จะไม่ทำงานโดยอัตโนมัติเป็นส่วนหนึ่งของบิลด์ เราขอแนะนําอย่างยิ่งให้คุณเรียกใช้ Lint อย่างชัดเจนเป็นส่วนหนึ่งของบิลด์การผสานรวมอย่างต่อเนื่องเพื่อให้เห็นการตรวจสอบ Lint ล่าสุดเมื่อสร้างซอร์สโค้ดที่มีอยู่
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้งาน Gradle จากบรรทัดคำสั่ง โปรดอ่านหัวข้อสร้างแอปจากบรรทัดคำสั่ง
เรียกใช้ Lint โดยใช้เครื่องมือแบบสแตนด์อโลน
หากไม่ได้ใช้ Android Studio หรือ Gradle ให้ติดตั้งเครื่องมือบรรทัดคำสั่ง Android SDK เพื่อใช้เครื่องมือ Lint แบบสแตนด์อโลน ค้นหาเครื่องมือตรวจหาข้อบกพร่อง
ที่ android_sdk/cmdline-tools/version/bin/lint
หมายเหตุ: หากพยายามเรียกใช้เครื่องมือแบบสแตนด์อโลนในโปรเจ็กต์ Gradle ระบบจะแสดงข้อผิดพลาด คุณควรใช้ gradle lint
(ใน Windows) หรือ ./gradlew
lint
(ใน macOS หรือ Linux) เพื่อเรียกใช้ Lint ในโปรเจ็กต์ Gradle เสมอ
หากต้องการเรียกใช้ Lint กับรายการไฟล์ในไดเรกทอรีโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้
lint [flags] <project directory>
เช่น คุณสามารถออกคำสั่งต่อไปนี้เพื่อสแกนไฟล์ในไดเรกทอรี myproject
และไดเรกทอรีย่อย รหัสปัญหา MissingPrefix
บอกให้ Lint สแกนหาเฉพาะแอตทริบิวต์ XML ที่ไม่มีคำนำหน้าเนมสเปซ Android
lint --check MissingPrefix myproject
หากต้องการดูรายการธงและอาร์กิวเมนต์บรรทัดคำสั่งทั้งหมดที่เครื่องมือรองรับ ให้ใช้คำสั่งต่อไปนี้
lint --help
ตัวอย่างต่อไปนี้แสดงเอาต์พุตคอนโซลเมื่อเรียกใช้คำสั่ง lint กับโปรเจ็กต์ชื่อ Earthquake
$ lint Earthquake Scanning Earthquake: ............................................................................................................................... Scanning Earthquake (Phase 2): ....... AndroidManifest.xml:23: Warning: <uses-sdk> tag appears after <application> tag [ManifestOrder] <uses-sdk android:minSdkVersion="7" /> ^ AndroidManifest.xml:23: Warning: <uses-sdk> tag should specify a target API level (the highest verified version; when running on later versions, compatibility behaviors may be enabled) with android:targetSdkVersion="?" [UsesMinSdkAttributes] <uses-sdk android:minSdkVersion="7" /> ^ res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources] res: Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder] 0 errors, 4 warnings
เอาต์พุตตัวอย่างแสดงคําเตือน 4 รายการและไม่มีข้อผิดพลาด
คำเตือน 2 รายการเกี่ยวข้องกับไฟล์ AndroidManifest.xml
ของโปรเจ็กต์:
ManifestOrder
UsesMinSdkAttributes
Preferences.xml
: UnusedResources
คำเตือน 1 รายการเกี่ยวข้องกับไดเรกทอรี res
ดังนี้
IconMissingDensityFolder
กำหนดค่า Lint เพื่อระงับคำเตือน
โดยค่าเริ่มต้น เมื่อคุณเรียกใช้การสแกน Lint เครื่องมือจะตรวจหาปัญหาทั้งหมดที่ Lint รองรับ นอกจากนี้ คุณยังจำกัดปัญหาที่จะให้ Lint ตรวจสอบและกำหนดระดับความรุนแรงของปัญหาได้ด้วย ตัวอย่างเช่น คุณสามารถระงับการตรวจสอบ Lint สำหรับปัญหาที่เจาะจงซึ่งไม่เกี่ยวข้องกับโปรเจ็กต์ของคุณ และสามารถกำหนดค่า Lint ให้รายงานปัญหาที่ไม่ร้ายแรงในระดับความรุนแรงที่ต่ำลงได้
ระดับความรุนแรงมีดังนี้
enable
disable
หรือignore
informational
warning
error
fatal
คุณกำหนดค่าการตรวจสอบโปรแกรมแก้ไขโค้ดระดับต่างๆ ได้ดังนี้
- ทั่วโลก (ทั้งโปรเจ็กต์)
- โมดูลโปรเจ็กต์
- โมดูลเวอร์ชันที่ใช้งานจริง
- โมดูลทดสอบ
- เปิดไฟล์
- ลําดับชั้นของคลาส
- ขอบเขตของระบบควบคุมเวอร์ชัน (VCS)
กำหนดค่าไฟล์ Lint
คุณระบุค่ากำหนดการตรวจสอบ Lint ในไฟล์ lint.xml
ได้ หากคุณสร้างไฟล์นี้ด้วยตนเอง ให้วางไฟล์ไว้ในไดเรกทอรีรูทของโปรเจ็กต์ Android
ไฟล์ lint.xml
ประกอบด้วยแท็กระดับบนสุด <lint>
ที่ล้อมรอบอยู่และมีองค์ประกอบย่อย <issue>
อย่างน้อย 1 รายการ Lint จะกําหนดค่าแอตทริบิวต์ id
ที่ไม่ซ้ำกันสําหรับ <issue>
แต่ละรายการ ดังนี้
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --> </lint>
หากต้องการเปลี่ยนระดับความรุนแรงของปัญหาหรือปิดใช้การตรวจสอบ Lint สำหรับปัญหา ให้ตั้งค่าแอตทริบิวต์ความรุนแรงในแท็ก <issue>
เคล็ดลับ: เรียกใช้คำสั่ง lint --list
เพื่อดูรายการปัญหาที่สนับสนุนทั้งหมดของ Lint และรหัสปัญหาที่เกี่ยวข้อง
ตัวอย่างไฟล์ lint.xml
ตัวอย่างต่อไปนี้แสดงเนื้อหาของไฟล์ lint.xml
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- Disable the IconMissingDensityFolder check in this project --> <issue id="IconMissingDensityFolder" severity="ignore" /> <!-- Ignore the ObsoleteLayoutParam issue in the specified files --> <issue id="ObsoleteLayoutParam"> <ignore path="res/layout/activation.xml" /> <ignore path="res/layout-xlarge/activation.xml" /> </issue> <!-- Ignore the UselessLeaf issue in the specified file --> <issue id="UselessLeaf"> <ignore path="res/layout/main.xml" /> </issue> <!-- Change the severity of hardcoded strings to "error" --> <issue id="HardcodedText" severity="error" /> </lint>
ตัวอย่างนี้แสดงวิธีรายงานปัญหาประเภทต่างๆ ระบบจะปิดใช้การตรวจสอบ IconMissingDensityFolder
ทั้งหมด และปิดใช้การตรวจสอบ ObsoleteLayoutParam
ในไฟล์ที่ระบุไว้ในประกาศ <ignore ... />
ที่แนบมาเท่านั้น
กำหนดค่าการตรวจสอบ Lint สำหรับไฟล์ต้นฉบับ Kotlin, Java และ XML
คุณปิดการตรวจสอบ Lint สำหรับไฟล์ต้นฉบับ Kotlin, Java และ XML ได้ในการโต้ตอบค่ากำหนด ดังนี้
- เลือกไฟล์ > การตั้งค่า (ใน Windows) หรือ Android Studio > ค่ากําหนด (ใน macOS หรือ Linux)
- เลือกเครื่องมือแก้ไข > การตรวจสอบ
- หากต้องการปิดใช้ ให้ยกเลิกการเลือกไฟล์แหล่งที่มาที่เหมาะสม
คุณตั้งค่าเหล่านี้สำหรับ IDE หรือสำหรับโปรเจ็กต์แต่ละรายการได้โดยการเลือกโปรไฟล์ที่เหมาะสม
กำหนดค่าการตรวจสอบ Lint ใน Java หรือ Kotlin
หากต้องการปิดใช้การตรวจสอบ Lint สำหรับคลาสหรือเมธอดในโปรเจ็กต์ Android โดยเฉพาะ ให้เพิ่มคำอธิบายประกอบ @SuppressLint
ลงในโค้ดนั้น
ตัวอย่างต่อไปนี้แสดงวิธีปิดการตรวจสอบ Lint สำหรับปัญหา NewApi
ในเมธอด onCreate
เครื่องมือ Lint จะตรวจสอบปัญหา NewApi
ในเมธอดอื่นๆ ของคลาสนี้ต่อไป
Kotlin
@SuppressLint("NewApi") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main)
Java
@SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
ซึ่งการดำเนินการเดียวกันนี้ทำได้ใน Composable ใดก็ได้ ข้อมูลโค้ดต่อไปนี้แสดงวิธีปิดการตรวจสอบ NewApi
ใน Composable
Kotlin
@SuppressLint("NewApi") @Composable fun MyComposable{ ... }
ตัวอย่างต่อไปนี้แสดงวิธีปิดการตรวจสอบ Lint สำหรับปัญหา ParserError
ในชั้นเรียน FeedProvider
Kotlin
@SuppressLint("ParserError") class FeedProvider : ContentProvider() {
Java
@SuppressLint("ParserError") public class FeedProvider extends ContentProvider {
หากต้องการระงับการตรวจหาปัญหา Lint ทั้งหมดในไฟล์ ให้ใช้คีย์เวิร์ด all
Kotlin
@SuppressLint("all")
Java
@SuppressLint("all")
คุณใช้คำอธิบายประกอบเดียวกันเพื่อระงับการตรวจสอบ Lint ในฟังก์ชัน Composable ใดก็ได้
กำหนดค่าการตรวจสอบโปรแกรมแก้ไขโค้ดใน XML
ใช้แอตทริบิวต์ tools:ignore
เพื่อปิดการตรวจสอบ Lint สำหรับส่วนต่างๆ ของไฟล์ XML ใส่ค่าเนมสเปซต่อไปนี้ในไฟล์ lint.xml
เพื่อให้เครื่องมือ Lint จดจำแอตทริบิวต์ได้
namespace xmlns:tools="http://schemas.android.com/tools"
ตัวอย่างต่อไปนี้แสดงวิธีปิดการตรวจสอบ Lint สำหรับปัญหา UnusedResources
ในองค์ประกอบ <LinearLayout>
ของไฟล์เลย์เอาต์ XML องค์ประกอบย่อยขององค์ประกอบหลักที่มีการประกาศแอตทริบิวต์ ignore
จะรับค่าแอตทริบิวต์นั้น ในตัวอย่างนี้ ระบบจะปิดใช้การตรวจสอบ Lint สําหรับองค์ประกอบ <TextView>
ย่อยด้วย
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" tools:ignore="UnusedResources" > <TextView android:text="@string/auto_update_prompt" /> </LinearLayout>
หากต้องการปิดใช้ปัญหามากกว่า 1 รายการ ให้ระบุปัญหาที่ต้องการปิดใช้เป็นสตริงที่คั่นด้วยคอมมา เช่น
tools:ignore="NewApi,StringFormatInvalid"
หากต้องการระงับการตรวจสอบปัญหาเกี่ยวกับ Lint ทั้งหมดในองค์ประกอบ XML ให้ใช้คีย์เวิร์ด all
ดังนี้
tools:ignore="all"
กำหนดค่าตัวเลือก Lint ด้วย Gradle
ปลั๊กอิน Android Gradle ให้คุณกำหนดค่าตัวเลือก Lint บางอย่าง เช่น การตรวจสอบที่จะเรียกใช้หรือละเว้น โดยใช้บล็อก
lint{}
ในไฟล์ build.gradle
ระดับโมดูล
ข้อมูลโค้ดต่อไปนี้แสดงพร็อพเพอร์ตี้บางรายการที่คุณกำหนดค่าได้
Kotlin
android { ... lint { // Turns off checks for the issue IDs you specify. disable += "TypographyFractions" + "TypographyQuotes" // Turns on checks for the issue IDs you specify. These checks are in // addition to the default lint checks. enable += "RtlHardcoded" + "RtlCompat" + "RtlEnabled" // To enable checks for only a subset of issue IDs and ignore all others, // list the issue IDs with the 'check' property instead. This property overrides // any issue IDs you enable or disable using the properties above. checkOnly += "NewApi" + "InlinedApi" // If set to true, turns off analysis progress reporting by lint. quiet = true // If set to true (default), stops the build if errors are found. abortOnError = false // If set to true, lint only reports errors. ignoreWarnings = true // If set to true, lint also checks all dependencies as part of its analysis. // Recommended for projects consisting of an app with library dependencies. checkDependencies = true } } ...
ดึงดูด
android { ... lint { // Turns off checks for the issue IDs you specify. disable 'TypographyFractions','TypographyQuotes' // Turns on checks for the issue IDs you specify. These checks are in // addition to the default lint checks. enable 'RtlHardcoded','RtlCompat', 'RtlEnabled' // To enable checks for only a subset of issue IDs and ignore all others, // list the issue IDs with the 'check' property instead. This property overrides // any issue IDs you enable or disable using the properties above. checkOnly 'NewApi', 'InlinedApi' // If set to true, turns off analysis progress reporting by lint. quiet true // If set to true (default), stops the build if errors are found. abortOnError false // If set to true, lint only reports errors. ignoreWarnings true // If set to true, lint also checks all dependencies as part of its analysis. // Recommended for projects consisting of an app with library dependencies. checkDependencies true } } ...
วิธีการ lint ทั้งหมดที่ลบล้างระดับความรุนแรงที่ระบุของปัญหาจะเป็นไปตามลําดับการกําหนดค่า ตัวอย่างเช่น การตั้งค่าปัญหาเป็นร้ายแรงใน finalizeDsl()
จะลบล้างการปิดใช้ปัญหาใน DSL หลัก
สร้างเส้นฐานคําเตือน
คุณสามารถบันทึกสแนปชอตชุดคำเตือนปัจจุบันของโปรเจ็กต์ จากนั้นใช้สแนปชอตเป็นเกณฑ์พื้นฐานสำหรับการเรียกใช้การตรวจสอบในอนาคตเพื่อให้มีการรายงานเฉพาะปัญหาใหม่ สแนปชอตพื้นฐานช่วยให้คุณเริ่มใช้ Lint เพื่อทำให้บิลด์ไม่ผ่านได้โดยไม่ต้องย้อนกลับไปแก้ไขปัญหาที่มีอยู่ทั้งหมดก่อน
หากต้องการสร้างสแนปชอตพื้นฐาน ให้แก้ไขไฟล์ build.gradle
ของโปรเจ็กต์ดังนี้
Kotlin
android { lint { baseline = file("lint-baseline.xml") } }
Groovy
android { lintOptions { baseline file("lint-baseline.xml") } }
เมื่อเพิ่มบรรทัดนี้เป็นครั้งแรก ระบบจะสร้างไฟล์ lint-baseline.xml
เพื่อสร้างเกณฑ์พื้นฐาน จากนั้นเครื่องมือจะอ่านไฟล์เพื่อกำหนดเส้นฐานเท่านั้น หากต้องการสร้างข้อมูลพื้นฐานใหม่ ให้ลบไฟล์ด้วยตนเองแล้วเรียกใช้ Lint อีกครั้งเพื่อสร้างข้อมูลพื้นฐานใหม่
จากนั้นเรียกใช้ Lint จาก IDE โดยเลือกโค้ด > ตรวจสอบโค้ด หรือจากบรรทัดคำสั่ง ดังนี้ เอาต์พุตจะแสดงตำแหน่งของไฟล์ lint-baseline.xml
ตำแหน่งไฟล์สำหรับการตั้งค่าของคุณอาจแตกต่างจากที่แสดงที่นี่
$ ./gradlew lintDebug -Dlint.baselines.continue=true ... Wrote XML report to file:///app/lint-baseline.xml Created baseline file /app/lint-baseline.xml
การเรียกใช้ lint
จะบันทึกปัญหาทั้งหมดที่เกิดขึ้นในปัจจุบันไว้ในไฟล์ lint-baseline.xml
ชุดปัญหาปัจจุบันเรียกว่าเส้นฐาน หากต้องการแชร์กับผู้อื่นก็ตรวจสอบไฟล์ lint-baseline.xml
ลงในการควบคุมเวอร์ชันได้
ปรับแต่งเส้นฐาน
หากต้องการเพิ่มเฉพาะปัญหาบางประเภทลงในเส้นฐาน ให้ระบุปัญหาที่จะเพิ่มโดยแก้ไขไฟล์ build.gradle
ของโปรเจ็กต์ ดังนี้
Kotlin
android { lint { checkOnly += "NewApi" + "HandlerLeak" baseline = file("lint-baseline.xml") } }
Groovy
android { lintOptions { checkOnly 'NewApi', 'HandlerLeak' baseline file("lint-baseline.xml") } }
หากคุณเพิ่มคำเตือนใหม่ลงในโค้ดเบสหลังจากสร้างบรรทัดฐานแล้ว Lint จะแสดงเฉพาะข้อบกพร่องที่พบใหม่
คำเตือนเกี่ยวกับพื้นฐาน
เมื่อใช้เส้นฐานอยู่ คุณจะได้รับคำเตือนที่ให้ข้อมูลซึ่งแจ้งว่าระบบกรองปัญหาอย่างน้อย 1 รายการออกแล้วเนื่องจากปัญหาดังกล่าวอยู่ในเส้นฐาน คำเตือนนี้ช่วยให้คุณทราบว่าคุณได้กําหนดค่าพื้นฐานแล้ว และจําเป็นต้องแก้ไขปัญหาทั้งหมดในบางจุด
คำเตือนที่ให้ข้อมูลนี้ยังติดตามปัญหาที่ไม่ได้รายงานอีกต่อไปด้วย ข้อมูลนี้จะช่วยให้คุณทราบว่าได้แก้ไขปัญหาแล้วจริงๆ หรือไม่ คุณจึงสร้างเส้นฐานอีกครั้งเพื่อป้องกันไม่ให้เกิดข้อผิดพลาดขึ้นอีกได้
หมายเหตุ: ระบบจะเปิดใช้เกณฑ์พื้นฐานเมื่อคุณเรียกใช้การตรวจสอบในโหมดแบบกลุ่มใน IDE ระบบจะไม่สนใจการตรวจสอบในเครื่องมือแก้ไขที่ทำงานอยู่เบื้องหลังเมื่อคุณแก้ไขไฟล์ เนื่องจากฐานบรรทัดแรกมีไว้สำหรับกรณีที่ฐานโค้ดมีคำเตือนจำนวนมากอยู่แล้ว แต่คุณต้องการแก้ไขปัญหาในเครื่องขณะแก้ไขโค้ด
เรียกใช้การตรวจสอบด้วยตนเอง
หากต้องการเรียกใช้ Lint ที่กําหนดค่าไว้และการตรวจสอบ IDE อื่นๆ ด้วยตนเอง ให้เลือก Code > Inspect Code ผลการตรวจสอบจะปรากฏในหน้าต่างผลการตรวจสอบ
ตั้งค่าขอบเขตและโปรไฟล์การตรวจสอบ
เลือกไฟล์ที่ต้องการวิเคราะห์ (ขอบเขตการตรวจสอบ) และการตรวจสอบที่ต้องการเรียกใช้ (โปรไฟล์การตรวจสอบ) ดังนี้
- ในมุมมอง Android ให้เปิดโปรเจ็กต์แล้วเลือกโปรเจ็กต์ โฟลเดอร์ หรือไฟล์ที่ต้องการวิเคราะห์
- จากแถบเมนู ให้เลือกโค้ด > ตรวจสอบโค้ด
ตรวจสอบการตั้งค่าในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ
ตัวเลือกที่ปรากฏในกล่องโต้ตอบระบุขอบเขตการตรวจสอบจะแตกต่างกันไป โดยขึ้นอยู่กับว่าคุณได้เลือกโปรเจ็กต์ โฟลเดอร์ หรือไฟล์ ดังนี้
- เมื่อคุณเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรีรายการเดียว กล่องโต้ตอบระบุขอบเขตการตรวจสอบจะแสดงเส้นทางไปยังโปรเจ็กต์ ไฟล์ หรือไดเรกทอรีที่คุณเลือก
- เมื่อเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรีมากกว่า 1 รายการ กล่องโต้ตอบระบุขอบเขตการตรวจสอบจะแสดงปุ่มตัวเลือกที่เลือกสำหรับไฟล์ที่เลือก
หากต้องการเปลี่ยนสิ่งที่ต้องตรวจสอบ ให้เลือกปุ่มตัวเลือกอื่น ดูคำอธิบายของช่องที่เป็นไปได้ทั้งหมดในกล่องโต้ตอบระบุขอบเขตการตรวจสอบได้ที่กล่องโต้ตอบระบุขอบเขตการตรวจสอบ
- ในส่วนโปรไฟล์การตรวจสอบ ให้เลือกโปรไฟล์ที่ต้องการใช้
คลิกตกลงเพื่อเรียกใช้การตรวจสอบ
รูปที่ 4 แสดงผลลัพธ์ของ Lint และผลการตรวจสอบ IDE อื่นๆ จากการเรียกใช้ Inspect Code:
-
ในแผงผลการตรวจสอบ ให้ดูผลการตรวจสอบโดยการขยายและเลือกหมวดหมู่ ข้อผิดพลาด ประเภท หรือปัญหา
แผงรายงานการตรวจสอบจะแสดงรายงานการตรวจสอบสำหรับหมวดหมู่ ประเภท หรือปัญหาของข้อผิดพลาดที่เลือกในแผงผลการตรวจสอบ และจะแสดงชื่อและตำแหน่งของข้อผิดพลาด รายงานการตรวจสอบจะแสดงข้อมูลอื่นๆ เช่น ข้อมูลสรุปปัญหา เพื่อช่วยคุณแก้ไขปัญหา (หากมี)
ในมุมมองแผนภูมิต้นไม้ของแผงผลการตรวจสอบ ให้คลิกขวาที่หมวดหมู่ ประเภท หรือปัญหาเพื่อแสดงเมนูตามบริบท
คุณทำสิ่งต่อไปนี้ได้ ทั้งนี้ขึ้นอยู่กับบริบท
- ข้ามไปยังแหล่งที่มา
- ยกเว้นและรวมรายการที่เลือก
- ระงับปัญหา
- แก้ไขการตั้งค่า
- จัดการการแจ้งเตือนการตรวจสอบ
- เรียกใช้การตรวจสอบอีกครั้ง
โปรดดูคำอธิบายของปุ่มในแถบเครื่องมือ รายการในเมนูตามบริบท และช่องในรายงานการตรวจสอบที่หัวข้อ หน้าต่างเครื่องมือผลการตรวจสอบ
ใช้ขอบเขตที่กำหนดเอง
ใช้ขอบเขตที่กำหนดเองรายการใดรายการหนึ่งที่มีให้ใน Android Studio ดังนี้
- ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
คลิกรายการขอบเขตที่กําหนดเองเพื่อแสดงตัวเลือก
- ทุกตำแหน่ง: ไฟล์ทั้งหมด
- ไฟล์โปรเจ็กต์: ไฟล์ทั้งหมดในโปรเจ็กต์ปัจจุบัน
- ไฟล์ต้นฉบับของโปรเจ็กต์: เฉพาะไฟล์ต้นฉบับในโปรเจ็กต์ปัจจุบัน
- ไฟล์เวอร์ชันที่ใช้งานจริงของโปรเจ็กต์: เฉพาะไฟล์เวอร์ชันที่ใช้งานจริงในโปรเจ็กต์ปัจจุบัน
- ไฟล์ทดสอบของโปรเจ็กต์: เฉพาะไฟล์ทดสอบในโปรเจ็กต์ปัจจุบัน
- Scratches และ Consoles: เฉพาะไฟล์ Scratchs และคอนโซลที่คุณเปิดในโปรเจ็กต์ปัจจุบันเท่านั้น
- ไฟล์ที่ดูล่าสุด: เฉพาะไฟล์ที่ดูล่าสุดในโปรเจ็กต์ปัจจุบัน
- ไฟล์ปัจจุบัน: เฉพาะไฟล์ปัจจุบันในโปรเจ็กต์ปัจจุบัน จะปรากฏเมื่อคุณเลือกไฟล์หรือโฟลเดอร์
- ไดเรกทอรีที่เลือก: โฟลเดอร์ปัจจุบันในโปรเจ็กต์ปัจจุบันเท่านั้น จะปรากฏเมื่อคุณเลือกโฟลเดอร์ไว้
- ลําดับชั้นของคลาส: เมื่อเลือกตัวเลือกนี้และคลิกตกลง กล่องโต้ตอบจะปรากฏขึ้นพร้อมชั้นเรียนทั้งหมดในโปรเจ็กต์ปัจจุบัน ในกล่องโต้ตอบ ให้ใช้ช่องค้นหาตามชื่อเพื่อกรองและเลือกคลาสที่จะตรวจสอบ หากคุณไม่ได้กรองรายการชั้นเรียน การตรวจสอบโค้ดจะตรวจสอบชั้นเรียนทั้งหมด
- คลิกตกลง
หากกําหนดค่า VCS สําหรับโปรเจ็กต์แล้ว คุณจะมีตัวเลือกในการจํากัดการค้นหาให้แสดงเฉพาะไฟล์ที่มีการแก้ไข
สร้างขอบเขตที่กําหนดเอง
เมื่อต้องการตรวจสอบไฟล์และไดเรกทอรีที่เลือกซึ่งไม่อยู่ในขอบเขตที่กำหนดเองที่มีอยู่ คุณสามารถสร้างขอบเขตที่กำหนดเองได้โดยทำดังนี้
- ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
คลิกจุด 3 จุดหลังรายการขอบเขตที่กำหนดเอง
กล่องโต้ตอบขอบเขตจะปรากฏขึ้น
- คลิกปุ่ม ที่มุมบนซ้ายของกล่องโต้ตอบเพื่อกําหนดขอบเขตใหม่
- เลือกภายในองค์กรในรายการเพิ่มขอบเขตที่ปรากฏขึ้น
ระบบจะใช้ทั้งขอบเขตภายในและขอบเขตที่แชร์ภายในโปรเจ็กต์สำหรับฟีเจอร์ตรวจสอบโค้ด นอกจากนี้ คุณยังใช้ขอบเขตที่แชร์กับฟีเจอร์อื่นๆ ของโปรเจ็กต์ที่มีช่องขอบเขตได้ด้วย ตัวอย่างเช่น เมื่อคุณคลิกแก้ไขการตั้งค่า เพื่อเปลี่ยนการตั้งค่าค้นหาการใช้งาน กล่องโต้ตอบที่ปรากฏจะมีช่องขอบเขตที่คุณสามารถเลือกขอบเขตที่แชร์ได้
- ตั้งชื่อขอบเขต แล้วคลิกตกลง
แผงด้านขวาของกล่องโต้ตอบขอบเขตจะแสดงตัวเลือกที่ช่วยให้คุณกําหนดขอบเขตที่กําหนดเองได้
- เลือกโปรเจ็กต์จากรายการ
รายการโปรเจ็กต์ที่ใช้ได้จะปรากฏขึ้น
หมายเหตุ: คุณจะสร้างขอบเขตที่กำหนดเองสำหรับโปรเจ็กต์หรือแพ็กเกจได้ ขั้นตอนจะเหมือนกัน
ขยายโฟลเดอร์โปรเจ็กต์ เลือกสิ่งที่ต้องการเพิ่มลงในขอบเขตที่กำหนดเอง แล้วเลือกว่าจะรวมหรือยกเว้นโฟลเดอร์นั้น
- รวม: รวมโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ แต่จะไม่รวมโฟลเดอร์ย่อย
- รวมแบบซ้ำ: รวมโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ รวมถึงโฟลเดอร์ย่อยและไฟล์ในโฟลเดอร์ย่อย
- ยกเว้น: ยกเว้นโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ แต่ไม่ยกเว้นโฟลเดอร์ย่อย
- ยกเว้นแบบตามลําดับชั้น: ยกเว้นโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ รวมถึงโฟลเดอร์ย่อยและไฟล์ในโฟลเดอร์ย่อย
รูปที่ 10 แสดงว่ารวมโฟลเดอร์ main แล้ว และรวมโฟลเดอร์ java และ res แบบซ้ำ สีน้ำเงินหมายถึงโฟลเดอร์ที่รวมอยู่บางส่วน และสีเขียวหมายถึงโฟลเดอร์และไฟล์ที่รวมอยู่แบบซ้ำ
- หากคุณเลือกโฟลเดอร์ java แล้วคลิกยกเว้นแบบตามลำดับ การไฮไลต์สีเขียวจะหายไปจากโฟลเดอร์ java รวมถึงโฟลเดอร์และไฟล์ทั้งหมดที่อยู่ภายใต้โฟลเดอร์ดังกล่าว
- หากคุณเลือกไฟล์ MainActivity.kt ที่ไฮไลต์สีเขียวแล้วคลิกยกเว้น ไฟล์ MainActivity.kt จะไม่ไฮไลต์เป็นสีเขียวอีกต่อไป แต่ไฟล์อื่นๆ ทั้งหมดในโฟลเดอร์ java จะยังคงไฮไลต์เป็นสีเขียว
- คลิกตกลง ขอบเขตที่กำหนดเองจะปรากฏที่ด้านล่างของรายการ
ตรวจสอบและแก้ไขโปรไฟล์การตรวจสอบ
Android Studio มีโปรไฟล์การตรวจสอบ Lint และโปรไฟล์การตรวจสอบอื่นๆ ที่อัปเดตผ่านการอัปเดต Android คุณสามารถใช้โปรไฟล์เหล่านี้ตามที่เป็นอยู่ หรือจะแก้ไขชื่อ คําอธิบาย ความรุนแรง และขอบเขตก็ได้ นอกจากนี้ คุณยังเปิดใช้งานและปิดใช้งานทั้งกลุ่มโปรไฟล์หรือโปรไฟล์แต่ละรายการภายในกลุ่มได้ด้วย
วิธีเข้าถึงการตั้งค่าการตรวจสอบ
- เลือกไฟล์ > การตั้งค่า (ใน Windows) หรือ Android Studio > ค่ากําหนด (ใน macOS หรือ Linux)
- เลือกเครื่องมือแก้ไข > การตรวจสอบ
-
แผงการตรวจสอบจะแสดงรายการการตรวจสอบที่รองรับและคําอธิบาย
เลือกรายการโปรไฟล์เพื่อสลับระหว่างการตรวจสอบเริ่มต้น (Android Studio) กับเริ่มต้นของโปรเจ็กต์ (โปรเจ็กต์ที่ใช้งานอยู่)
ดูข้อมูลเพิ่มเติมได้ที่หน้าจัดการโปรไฟล์ของ IntelliJ
ในรายการการตรวจสอบในแผงด้านซ้าย ให้เลือกหมวดหมู่โปรไฟล์ระดับบนสุด หรือขยายกลุ่มและเลือกโปรไฟล์ที่ต้องการ
เมื่อเลือกหมวดหมู่โปรไฟล์ คุณจะแก้ไขการตรวจสอบทั้งหมดในหมวดหมู่นั้นเป็นการสํารวจเดียวได้
- เลือกรายการแสดงการดำเนินการกับสคีมา เพื่อคัดลอก เปลี่ยนชื่อ เพิ่มรายละเอียด ส่งออก และนําเข้าการตรวจสอบ
- เมื่อเสร็จแล้ว ให้คลิกตกลง