นอกเหนือจากการสร้างการทดสอบ เพื่อให้แน่ใจว่าแอปเป็นไปตามข้อกำหนดด้านฟังก์ชันการทำงานแล้ว คุณยังต้อง เรียกใช้โค้ดผ่านเครื่องมือ Lint เพื่อช่วยให้มั่นใจว่าโค้ดไม่มีปัญหาด้านโครงสร้าง ด้วย เครื่องมือ Lint ช่วยค้นหาโค้ดที่มีโครงสร้างไม่ดีซึ่งอาจส่งผลต่อความน่าเชื่อถือและประสิทธิภาพของแอป Android รวมถึงทำให้โค้ดบำรุงรักษายากขึ้น ขอแนะนำอย่างยิ่งให้คุณแก้ไขข้อผิดพลาดที่ Lint ตรวจพบ ก่อนเผยแพร่แอป
ตัวอย่างเช่น หากไฟล์ทรัพยากร XML มีเนมสเปซที่ไม่ได้ใช้ จะทำให้ใช้พื้นที่และต้องมีการประมวลผลที่ไม่จำเป็น ปัญหาด้านโครงสร้างอื่นๆ เช่น การใช้องค์ประกอบที่เลิกใช้งานแล้วหรือการเรียก API ที่ไม่รองรับใน API เวอร์ชันเป้าหมาย อาจทำให้โค้ดทำงานไม่ถูกต้อง Lint ช่วยคุณแก้ไขปัญหาเหล่านี้ได้
นอกจากนี้ คุณยังเพิ่มคำอธิบายประกอบลงในโค้ดเพื่อปรับปรุงประสิทธิภาพการ Lint ได้ด้วย
ภาพรวม
Android Studio มีเครื่องมือสแกนโค้ดที่ชื่อ lint ซึ่งจะช่วยคุณระบุและแก้ไขปัญหาเกี่ยวกับคุณภาพเชิงโครงสร้างของโค้ด โดยไม่ต้องเรียกใช้แอปหรือเขียนกรณีทดสอบ ปัญหาแต่ละอย่างที่เครื่องมือตรวจพบจะมีการรายงานพร้อมข้อความอธิบายและระดับความรุนแรง เพื่อให้คุณจัดลำดับความสำคัญของการปรับปรุงที่สำคัญซึ่งจำเป็นต้องดำเนินการได้ นอกจากนี้ คุณยังลดระดับความรุนแรงของปัญหาเพื่อ ละเว้นปัญหาที่ไม่เกี่ยวข้องกับโปรเจ็กต์ หรือเพิ่มระดับความรุนแรงเพื่อ เน้นปัญหาที่เฉพาะเจาะจงได้ด้วย
เครื่องมือ Lint จะตรวจสอบไฟล์ต้นฉบับของโปรเจ็กต์ Android เพื่อหาข้อบกพร่องที่อาจเกิดขึ้นและ การปรับปรุงการเพิ่มประสิทธิภาพเพื่อความถูกต้อง ความปลอดภัย ประสิทธิภาพ ความสามารถในการใช้งาน การช่วยเหลือพิเศษ และการแปลเป็นภาษาต่างๆ เมื่อใช้ Android Studio การตรวจสอบ Lint และ IDE ที่กำหนดค่าไว้จะทำงานเมื่อคุณสร้างแอป อย่างไรก็ตาม คุณสามารถเรียกใช้การตรวจสอบด้วยตนเองหรือ เรียกใช้ Lint จากบรรทัดคำสั่งได้ตามที่อธิบายไว้ในหน้านี้
เครื่องมือ Lint ในตัวจะตรวจสอบโค้ดขณะที่คุณใช้ Android Studio คุณดูคำเตือนและข้อผิดพลาดได้ 2 วิธี ดังนี้
- เป็นข้อความป๊อปอัปในหน้าต่างเอดิเตอร์ เมื่อ Lint พบปัญหา ระบบจะไฮไลต์ โค้ดที่เป็นปัญหาเป็นสีเหลือง สำหรับปัญหาที่ร้ายแรงกว่านั้น ระบบจะขีดเส้นใต้โค้ดเป็นสีแดง
- ในหน้าต่างผลการตรวจสอบของ Lint เมื่อคลิกโค้ด > ตรวจสอบโค้ด
หมายเหตุ: เมื่อคอมไพล์โค้ดใน Android Studio ระบบจะเรียกใช้ การตรวจสอบโค้ดของ IntelliJ เพิ่มเติมเพื่อเพิ่มประสิทธิภาพการตรวจสอบโค้ด โปรดอัปเดต Android Studio ให้เป็นเวอร์ชันล่าสุดอยู่เสมอเพื่อให้แน่ใจว่า มีกฎการตรวจสอบด้วยเครื่องมือวิเคราะห์ซอร์สโค้ดและการตรวจสอบล่าสุด
รูปที่ 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 ตรวจสอบเสร็จแล้ว เครื่องมือจะระบุเส้นทางไปยัง XML และ HTML ของรายงาน Lint จากนั้นคุณจะไปยังรายงาน HTML และเปิดในเบราว์เซอร์ได้ ดังที่แสดงในรูปที่ 2

หากโปรเจ็กต์มีตัวแปรบิลด์ Lint จะตรวจสอบเฉพาะตัวแปรเริ่มต้น หากต้องการเรียกใช้ Lint ในตัวแปรอื่น
คุณต้องขึ้นต้นชื่อตัวแปรด้วยตัวพิมพ์ใหญ่และนำหน้าด้วย lint
./gradlew lintRelease
หมายเหตุ: Lint จะไม่ทำงานโดยอัตโนมัติเป็นส่วนหนึ่งของการสร้าง เราขอแนะนำเป็นอย่างยิ่ง ให้คุณเรียกใช้ Lint อย่างชัดเจนเป็นส่วนหนึ่งของ การสร้างการผสานรวมอย่างต่อเนื่อง เพื่อให้คุณเห็นการตรวจสอบ Lint ล่าสุดเมื่อสร้างซอร์สโค้ดที่มีอยู่
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกใช้ Gradle Tasks จากบรรทัดคำสั่ง โปรดอ่านหัวข้อสร้างแอปจากบรรทัดคำสั่ง
เรียกใช้ Lint โดยใช้เครื่องมือแบบสแตนด์อโลน
หากไม่ได้ใช้ Android Studio หรือ Gradle
ให้ติดตั้งเครื่องมือบรรทัดคำสั่งของ Android SDK
เพื่อใช้เครื่องมือ Lint แบบสแตนด์อโลน ค้นหาเครื่องมือ 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 ที่ไม่มีคำนำหน้า Namespace ของ Android
lint --check MissingPrefix myproject
หากต้องการดูรายการทั้งหมดของ Flag และอาร์กิวเมนต์บรรทัดคำสั่งที่เครื่องมือรองรับ ให้ใช้คำสั่งต่อไปนี้
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
คำเตือนหนึ่งเกี่ยวข้องกับไดเรกทอรี res
ดังนี้
IconMissingDensityFolder
กำหนดค่า Lint เพื่อระงับคำเตือน
โดยค่าเริ่มต้น เมื่อคุณเรียกใช้การสแกน Lint เครื่องมือจะตรวจสอบปัญหาทั้งหมดที่ Lint รองรับ นอกจากนี้ คุณยังจำกัดปัญหาที่ Lint จะตรวจสอบได้ และกำหนดระดับความรุนแรง สำหรับปัญหาได้ด้วย เช่น คุณสามารถระงับการตรวจสอบ Lint สำหรับปัญหาที่เฉพาะเจาะจงซึ่งไม่เกี่ยวข้องกับโปรเจ็กต์ และกำหนดค่า Lint ให้รายงานปัญหาที่ไม่ร้ายแรงที่ระดับความรุนแรงต่ำกว่าได้
ระดับความรุนแรงมีดังนี้
enable
disable
หรือignore
informational
warning
error
fatal
คุณกำหนดค่าการตรวจสอบ Lint สำหรับระดับต่างๆ ได้ดังนี้
- ทั่วโลก (ทั้งโปรเจ็กต์)
- โมดูลโปรเจ็กต์
- โมดูลการผลิต
- โมดูลทดสอบ
- เปิดไฟล์
- ลำดับชั้นของคลาส
- ขอบเขตของระบบควบคุมเวอร์ชัน (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 รองรับและรหัสปัญหาที่เกี่ยวข้อง ให้เรียกใช้คำสั่ง lint --list
ต้องเรียกใช้ตัวเลือก --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 ในฟังก์ชันที่ใช้ได้ทั้งหมด
กำหนดค่าการตรวจสอบ Lint ใน 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 } } ...
Groovy
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 ให้เปิดโปรเจ็กต์และเลือกโปรเจ็กต์ โฟลเดอร์ หรือ ไฟล์ที่ต้องการวิเคราะห์
- จากแถบเมนู ให้เลือกโค้ด > ตรวจสอบโค้ด
ตรวจสอบการตั้งค่าในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ
รูปที่ 3 ตรวจสอบการตั้งค่าขอบเขตการตรวจสอบ ตัวเลือกที่ปรากฏในกล่องโต้ตอบระบุขอบเขตการตรวจสอบจะแตกต่างกันไป โดยขึ้นอยู่กับว่าคุณเลือกโปรเจ็กต์ โฟลเดอร์ หรือไฟล์
- เมื่อเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรี 1 รายการ กล่องโต้ตอบระบุขอบเขตการตรวจสอบจะแสดงเส้นทางไปยังโปรเจ็กต์ ไฟล์ หรือไดเรกทอรีที่คุณเลือก
- เมื่อเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรีมากกว่า 1 รายการ กล่องโต้ตอบระบุขอบเขตการตรวจสอบ จะแสดงปุ่มตัวเลือกที่เลือกสำหรับไฟล์ที่เลือก
หากต้องการเปลี่ยนสิ่งที่ต้องการตรวจสอบ ให้เลือก ปุ่มตัวเลือกอื่น ดูคำอธิบายของช่องทั้งหมดที่เป็นไปได้ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบได้ที่กล่องโต้ตอบระบุขอบเขตการตรวจสอบ
- เลือกโปรไฟล์ที่ต้องการใช้ในส่วนโปรไฟล์การตรวจสอบ
คลิกตกลงเพื่อเรียกใช้การตรวจสอบ
รูปที่ 4 แสดงผลการตรวจสอบ Lint และ IDE อื่นๆ จากการเรียกใช้ตรวจสอบโค้ด
รูปที่ 4 ผลการตรวจสอบ เลือกปัญหา เพื่อดูวิธีแก้ไข -
ในแผงผลการตรวจสอบ ให้ดูผลการตรวจสอบโดยขยายและเลือก หมวดหมู่ ประเภท หรือปัญหาของข้อผิดพลาด
แผงรายงานการตรวจสอบจะแสดงรายงานการตรวจสอบสำหรับหมวดหมู่ ประเภท หรือปัญหาของข้อผิดพลาดที่เลือกในแผงผลการตรวจสอบ และแสดงชื่อและ ตำแหน่งของข้อผิดพลาด รายงานการตรวจสอบจะแสดงข้อมูลอื่นๆ (หากมี) เช่น ข้อมูลสรุปปัญหา เพื่อช่วยคุณแก้ไขปัญหา
ในมุมมองแบบต้นไม้ของแผงผลการตรวจสอบ ให้คลิกขวาที่หมวดหมู่ ประเภท หรือปัญหาเพื่อ แสดง เมนูตามบริบท
คุณทำสิ่งต่อไปนี้ได้ ทั้งนี้ขึ้นอยู่กับบริบท
- ข้ามไปยังแหล่งที่มา
- ยกเว้นและรวมรายการที่เลือก
- ระงับปัญหา
- แก้ไขการตั้งค่า
- จัดการการแจ้งเตือนการตรวจสอบ
- เรียกใช้การตรวจสอบอีกครั้ง
ดูคำอธิบายของปุ่มแถบเครื่องมือ รายการในเมนูตามบริบท และฟิลด์รายงานการตรวจสอบได้ที่ หน้าต่างเครื่องมือผลการตรวจสอบ
ใช้ขอบเขตที่กำหนดเอง
ใช้ขอบเขตที่กำหนดเองรายการใดรายการหนึ่งที่ระบุไว้ใน Android Studio ดังนี้
- ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
คลิกรายการขอบเขตที่กําหนดเองเพื่อแสดงตัวเลือก
รูปที่ 5 เลือกขอบเขตที่กำหนดเองที่ต้องการ ใช้ - ทุกที่: ไฟล์ทั้งหมด
- ไฟล์โปรเจ็กต์: ไฟล์ทั้งหมดในโปรเจ็กต์ปัจจุบัน
- ไฟล์ต้นฉบับของโปรเจ็กต์: เฉพาะไฟล์ต้นฉบับในโปรเจ็กต์ปัจจุบัน
- ไฟล์การผลิตของโปรเจ็กต์: เฉพาะไฟล์การผลิตในโปรเจ็กต์ปัจจุบัน
- ไฟล์ทดสอบของโปรเจ็กต์: เฉพาะไฟล์ทดสอบในโปรเจ็กต์ปัจจุบัน
- รอยขีดข่วนและคอนโซล: เฉพาะไฟล์รอยขีดข่วนและคอนโซลที่คุณเปิดในโปรเจ็กต์ปัจจุบัน
- ไฟล์ที่ดูเมื่อเร็วๆ นี้: เฉพาะไฟล์ที่ดูเมื่อเร็วๆ นี้ในโปรเจ็กต์ปัจจุบัน
- ไฟล์ปัจจุบัน: เฉพาะไฟล์ปัจจุบันในโปรเจ็กต์ปัจจุบัน ปรากฏขึ้นเมื่อคุณเลือก ไฟล์หรือโฟลเดอร์
- ไดเรกทอรีที่เลือก: เฉพาะโฟลเดอร์ปัจจุบันในโปรเจ็กต์ปัจจุบัน ปรากฏขึ้นเมื่อคุณ เลือกโฟลเดอร์
- ลำดับชั้นของคลาส: เมื่อเลือกตัวเลือกนี้แล้วคลิกตกลง กล่องโต้ตอบจะปรากฏขึ้น พร้อมคลาสทั้งหมดในโปรเจ็กต์ปัจจุบัน ในกล่องโต้ตอบ ให้ใช้ช่องค้นหาตามชื่อ เพื่อกรองและเลือกคลาสที่จะตรวจสอบ หากคุณไม่กรองรายการชั้นเรียน การตรวจสอบโค้ดจะตรวจสอบชั้นเรียนทั้งหมด
- คลิกตกลง
หากคุณกำหนดค่า VCS สำหรับโปรเจ็กต์แล้ว ก็จะมีตัวเลือกในการจำกัดการค้นหา เฉพาะไฟล์ที่ได้รับการแก้ไขด้วย
สร้างขอบเขตที่กำหนดเอง
หากต้องการตรวจสอบไฟล์และไดเรกทอรีที่เลือกซึ่งไม่ได้อยู่ในขอบเขตที่กำหนดเองที่มีอยู่ คุณสามารถสร้างขอบเขตที่กำหนดเองได้โดยทำดังนี้
- ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
คลิกจุด 3 จุดหลังรายการขอบเขตที่กำหนดเอง
รูปที่ 6 กล่องโต้ตอบระบุขอบเขตการตรวจสอบ กล่องโต้ตอบขอบเขตจะปรากฏขึ้น
รูปที่ 7 สร้างขอบเขตที่กำหนดเอง - คลิกปุ่ม
ที่มุมซ้ายบนของกล่องโต้ตอบเพื่อกำหนดขอบเขตใหม่
- ในรายการเพิ่มขอบเขตที่ปรากฏขึ้น ให้เลือกภายใน
ทั้งขอบเขตในเครื่องและขอบเขตที่แชร์จะใช้ภายในโปรเจ็กต์สำหรับฟีเจอร์ตรวจสอบโค้ด ขอบเขตที่แชร์ยังใช้กับฟีเจอร์โปรเจ็กต์อื่นๆ ที่มีฟิลด์ขอบเขต ได้ด้วย ตัวอย่างเช่น เมื่อคลิกแก้ไขการตั้งค่า
เพื่อเปลี่ยน การตั้งค่าสำหรับค้นหาการใช้งาน กล่องโต้ตอบที่ได้จะมีช่องขอบเขตที่คุณ เลือกขอบเขตที่แชร์ได้
รูปที่ 8 เลือกขอบเขตที่แชร์จากกล่องโต้ตอบค้นหาการใช้งาน - ตั้งชื่อขอบเขต แล้วคลิกตกลง
บานหน้าต่างด้านขวาของกล่องโต้ตอบขอบเขต จะแสดงตัวเลือกที่ช่วยให้คุณกำหนดขอบเขตที่กำหนดเองได้
- เลือกโปรเจ็กต์จากรายการ
รายการโปรเจ็กต์ที่พร้อมใช้งานจะปรากฏขึ้น
หมายเหตุ: คุณสร้างขอบเขตที่กำหนดเองสำหรับโปรเจ็กต์หรือแพ็กเกจได้ โดย ขั้นตอนจะเหมือนกัน
ขยายโฟลเดอร์โปรเจ็กต์ เลือกสิ่งที่ต้องการเพิ่มลงในขอบเขตที่กำหนดเอง แล้วเลือก ว่าจะรวมหรือยกเว้น
รูปที่ 9 กำหนดขอบเขตที่กำหนดเอง - รวม: รวมโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ แต่ไม่รวมโฟลเดอร์ย่อย ใดๆ
- รวมแบบเรียกซ้ำ: รวมโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ รวมถึงโฟลเดอร์ย่อยและไฟล์ในโฟลเดอร์ย่อย
- ยกเว้น: ยกเว้นโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ แต่ไม่ยกเว้นโฟลเดอร์ย่อย ใดๆ
- ยกเว้นแบบเรียกซ้ำ: ยกเว้นโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ รวมถึงโฟลเดอร์ย่อยและไฟล์ในโฟลเดอร์ย่อย
รูปที่ 10 แสดงให้เห็นว่าโฟลเดอร์หลักรวมอยู่ด้วย และโฟลเดอร์ java และ res รวมอยู่ด้วยแบบเรียกซ้ำ สีน้ำเงินแสดงโฟลเดอร์ที่รวมบางส่วน และสีเขียว แสดงโฟลเดอร์และไฟล์ที่รวมแบบเรียกซ้ำ
รูปที่ 10 รูปแบบตัวอย่างสำหรับขอบเขตที่กำหนดเอง - หากคุณเลือกโฟลเดอร์ java แล้วคลิกยกเว้นแบบเรียกซ้ำ ไฮไลต์สีเขียว จะหายไปจากโฟลเดอร์ java รวมถึงโฟลเดอร์และไฟล์ทั้งหมดในโฟลเดอร์ดังกล่าว
- หากเลือกไฟล์ MainActivity.kt ที่ไฮไลต์เป็นสีเขียวและ คลิกยกเว้น MainActivity.kt จะไม่ไฮไลต์เป็นสีเขียวอีกต่อไป แต่ รายการอื่นๆ ทั้งหมดในโฟลเดอร์ java จะยังคงเป็นสีเขียว
- คลิกตกลง ขอบเขตที่กำหนดเองจะปรากฏที่ด้านล่างของรายการ
ตรวจสอบและแก้ไขโปรไฟล์การตรวจสอบ
Android Studio มีตัวเลือกโปรไฟล์ Lint และโปรไฟล์การตรวจสอบอื่นๆ ที่ได้รับการอัปเดตผ่านการอัปเดต Android คุณสามารถใช้โปรไฟล์เหล่านี้ตามที่เห็น หรือแก้ไขชื่อ คำอธิบาย ความรุนแรง และ ขอบเขตก็ได้ นอกจากนี้ คุณยังเปิดใช้งานและปิดใช้งานกลุ่มโปรไฟล์ทั้งหมดหรือโปรไฟล์แต่ละรายการ ภายในกลุ่มได้ด้วย
วิธีเข้าถึงการตั้งค่าการตรวจสอบ
- เลือกไฟล์ > การตั้งค่า (ใน Windows) หรือ Android Studio > ค่ากําหนด (ใน macOS หรือ Linux)
- เลือกเอดิเตอร์ > การตรวจสอบ
-
แผงการตรวจสอบจะแสดงรายการการตรวจสอบที่รองรับและคำอธิบาย ของการตรวจสอบ
รูปที่ 11 การตรวจสอบที่รองรับและคำอธิบาย เลือกรายการโปรไฟล์เพื่อสลับระหว่างการตรวจสอบค่าเริ่มต้น (Android Studio) กับ ค่าเริ่มต้นของโปรเจ็กต์ (โปรเจ็กต์ที่ใช้งานอยู่)
ดูข้อมูลเพิ่มเติมได้ที่หน้าจัดการโปรไฟล์ของ IntelliJ
ในรายการการตรวจสอบในแผงด้านซ้าย ให้เลือกหมวดหมู่โปรไฟล์ระดับบนสุดหรือ ขยายกลุ่มแล้วเลือกโปรไฟล์ที่ต้องการ
เมื่อเลือกหมวดหมู่โปรไฟล์ คุณจะทำสิ่งต่อไปนี้ได้ แก้ไขการตรวจสอบทั้งหมดในหมวดหมู่นั้นเป็นการตรวจสอบเดียว
- เลือกรายการแสดงการดำเนินการกับสคีมา
เพื่อคัดลอก เปลี่ยนชื่อ เพิ่ม คำอธิบาย ส่งออก และนำเข้าการตรวจสอบ
- เมื่อเสร็จแล้ว คลิกตกลง