นอกเหนือจากการสร้างการทดสอบ ที่จะตรวจสอบว่าแอปของคุณเป็นไปตามข้อกำหนดฟังก์ชัน คุณต้องเรียกใช้โค้ดผ่านเครื่องมือ Lint เพื่อให้แน่ใจว่าโค้ดของคุณไม่มีโครงสร้าง ปัญหา เครื่องมือ Lint จะช่วยค้นหาโค้ดที่มีโครงสร้างไม่ดี ซึ่งสามารถส่งผลกระทบต่อ ความเสถียรและประสิทธิภาพของแอป Android รวมถึงทำให้ดูแลรักษาโค้ดได้ยากขึ้น ขอแนะนําอย่างยิ่งให้คุณแก้ไขข้อผิดพลาดที่ Lint ตรวจพบ ก่อนเผยแพร่แอป
ตัวอย่างเช่น หากไฟล์ทรัพยากร XML มีเนมสเปซที่ไม่ได้ใช้ การดำเนินการนี้จะใช้พื้นที่และต้องใช้ การประมวลผลที่ไม่จำเป็น ปัญหาด้านโครงสร้างอื่นๆ เช่น การใช้องค์ประกอบที่เลิกใช้งานแล้วหรือการเรียก API เวอร์ชัน API เป้าหมายไม่รองรับอาจทำให้โค้ดทำงานได้ไม่ถูกต้อง Lint ช่วยคุณแก้ปัญหาเหล่านี้ได้
เพื่อปรับปรุงประสิทธิภาพ Lintting คุณสามารถ เพิ่มคำอธิบายประกอบลงในโค้ด
ภาพรวม
Android Studio มีเครื่องมือสแกนโค้ดที่เรียกว่า lint ที่ช่วยให้คุณระบุและแก้ไขปัญหาเกี่ยวกับคุณภาพโครงสร้างของโค้ดได้ โดยไม่ต้องเรียกใช้แอปหรือเขียนกรอบการทดสอบ ปัญหาที่เครื่องมือตรวจพบคือ พร้อมข้อความอธิบายและระดับความรุนแรงเพื่อให้คุณจัดลำดับความสำคัญ การปรับปรุงสำคัญที่จำเป็นต้องทำ คุณยังสามารถลดระดับความรุนแรงของปัญหาเป็น เพิกเฉยต่อปัญหาที่ไม่เกี่ยวข้องกับโครงการของคุณหรือเพิ่มระดับความรุนแรงเป็น ไฮไลต์ปัญหาเฉพาะ
เครื่องมือ Lint จะตรวจสอบไฟล์แหล่งที่มาของโปรเจ็กต์ Android เพื่อหาข้อบกพร่องที่อาจเกิดขึ้น การปรับปรุงเพื่อความถูกต้อง ความปลอดภัย ประสิทธิภาพ ความสามารถในการใช้งาน ความสามารถเข้าถึงได้ง่าย และการปรับให้เป็นสากล เมื่อใช้ Android Studio การตรวจสอบ Lint และ IDE ที่กำหนดค่าไว้จะทำงานเมื่อคุณสร้างแอป อย่างไรก็ตาม คุณสามารถเรียกใช้การตรวจสอบด้วยตนเองหรือ เรียกใช้ Lint จากบรรทัดคำสั่งตามที่อธิบายไว้ในหน้านี้
เครื่องมือ Lint ในตัวจะตรวจสอบโค้ดของคุณขณะที่คุณใช้ Android Studio คุณสามารถดูคำเตือนและข้อผิดพลาดได้ 2 วิธีดังนี้
- เป็นข้อความป๊อปอัปในหน้าต่างตัวแก้ไข เมื่อ Lint พบปัญหา ระบบจะไฮไลต์ โค้ดที่เป็นปัญหาจะเป็นสีเหลือง สำหรับปัญหาที่ร้ายแรงกว่า จะขีดเส้นใต้รหัสด้วยสีแดง
- ในหน้าต่างผลการตรวจสอบของ Lint เมื่อคุณคลิกโค้ด > ตรวจสอบโค้ด
หมายเหตุ: เมื่อคอมไพล์โค้ดใน Android Studio แล้ว การตรวจสอบโค้ด IntelliJ ทำงานเพื่อปรับปรุงโค้ด รีวิว
รูปที่ 1 แสดงวิธีที่เครื่องมือ Lint ประมวลผลไฟล์แหล่งที่มาของแอป
![เวิร์กโฟลว์การสแกนโค้ดด้วยเครื่องมือ Lint](https://developer.android.google.cn/static/studio/images/write/lint.png?authuser=19&hl=th)
- ไฟล์แหล่งที่มาของแอป
- ไฟล์ต้นฉบับประกอบด้วยไฟล์ต่างๆ ที่รวมอยู่ในโปรเจ็กต์ Android ซึ่งรวมถึง Kotlin, Java และ ไฟล์ XML, ไอคอน และไฟล์การกำหนดค่า ProGuard
- ไฟล์
lint.xml
- ไฟล์การกำหนดค่าที่คุณใช้ระบุการตรวจสอบ Lint ใดก็ได้ที่ต้องการ ยกเว้นและปรับแต่งระดับความรุนแรงของปัญหา
- เครื่องมือ Lint
- เครื่องมือสแกนโค้ดแบบคงที่ที่คุณเรียกใช้ในโปรเจ็กต์ Android ได้จาก บรรทัดคำสั่งหรือใน Android Studio The Lint ในการตรวจสอบเครื่องมือเพื่อหาปัญหาด้านโค้ดที่มีโครงสร้างที่อาจส่งผลต่อคุณภาพและประสิทธิภาพของ แอปสำหรับ Android
- ผลการตรวจสอบ Lint
- คุณสามารถดูผลลัพธ์จาก Lint ได้ในคอนโซลหรือผลการตรวจสอบ
ใน Android Studio ถ้าคุณเรียกใช้
lint
จากบรรทัดคำสั่ง ผลลัพธ์จะเป็น เขียนไปยังโฟลเดอร์build/
สำหรับรายละเอียดเพิ่มเติม โปรดดูที่ส่วนเกี่ยวกับ เรียกใช้การตรวจสอบด้วยตนเอง
เรียกใช้ Lint จากบรรทัดคำสั่ง
หากใช้ Android Studio หรือ Gradle ให้ใช้ Gradle Wrapper เพื่อเรียกใช้งาน 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 ของ HTML](https://developer.android.google.cn/static/studio/images/write/html_lint_report.png?authuser=19&hl=th)
หากโครงการของคุณมี build
ตัวแปร lint จะตรวจสอบเฉพาะตัวแปรเริ่มต้นเท่านั้น หากคุณต้องการเรียกใช้ Lint ในอุปกรณ์อื่น
ตัวแปร คุณต้องทำให้ชื่อตัวแปรเป็นตัวพิมพ์ใหญ่และนำหน้าด้วย lint
./gradlew lintRelease
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการวิ่ง เพิ่มงานจากบรรทัดคำสั่ง โปรดอ่านสร้างแอปจากบรรทัดคำสั่ง
เรียกใช้ 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 ที่ไม่มีคำนำหน้าเนมสเปซ Android
lint --check MissingPrefix myproject
หากต้องการดูรายการแฟล็กและอาร์กิวเมนต์บรรทัดคำสั่งที่เครื่องมือรองรับ ให้ใช้เมธอด คำสั่งต่อไปนี้
lint --help
ตัวอย่างต่อไปนี้แสดงเอาต์พุตของคอนโซลเมื่อเรียกใช้คำสั่ง lint กับ โปรเจ็กต์ชื่อแผ่นดินไหว:
$ 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
คุณกำหนดค่าการตรวจสอบ 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
ตัวอย่างไฟล์ 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 ใดก็ได้
กำหนดค่าการตรวจสอบ 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 } } ...
ดึงดูด
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") } }
ดึงดูด
android { lintOptions { baseline file("lint-baseline.xml") } }
เมื่อคุณเพิ่มบรรทัดนี้เป็นครั้งแรก ระบบจะสร้างไฟล์ lint-baseline.xml
เพื่อสร้าง
พื้นฐานของคุณ หลังจากนั้น เครื่องมือจะอ่านเฉพาะไฟล์เพื่อกำหนดเกณฑ์พื้นฐาน หากคุณต้องการ
ในการสร้างเกณฑ์พื้นฐานใหม่ ให้ลบไฟล์ด้วยตนเอง แล้วเรียกใช้ Lint อีกครั้งเพื่อสร้างไฟล์ใหม่
จากนั้นเรียกใช้ Lint จาก IDE โดยเลือก Code > ตรวจสอบโค้ดหรือจากบรรทัดคำสั่ง
ดังนี้ เอาต์พุตจะพิมพ์ตำแหน่งของไฟล์ 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") } }
ดึงดูด
android { lintOptions { checkOnly 'NewApi', 'HandlerLeak' baseline file("lint-baseline.xml") } }
หากคุณเพิ่มคำเตือนใหม่ใน Codebase หลังจากที่สร้าง รายการพื้นฐาน, รายการ Lint เท่านั้น ข้อบกพร่องที่เพิ่งเพิ่มเข้ามา
คำเตือนเกี่ยวกับเกณฑ์พื้นฐาน
เมื่อเกณฑ์พื้นฐานมีผลอยู่ คุณจะได้รับคำเตือนที่ให้ข้อมูลว่า ปัญหาถูกกรองออกเนื่องจากแสดงอยู่ในเกณฑ์พื้นฐาน ช่วงเวลานี้ คำเตือนช่วยให้คุณจำได้ว่าได้กำหนดค่าเกณฑ์พื้นฐานแล้ว และต้องแก้ไขปัญหาทั้งหมด อะไรบางอย่าง
คำเตือนที่ให้ข้อมูลนี้ยังติดตามปัญหาที่ไม่ได้รายงานอีกต่อไปด้วย ข้อมูลนี้จะช่วยให้ คุณทราบว่าปัญหาได้รับการแก้ไขแล้วหรือไม่ ดังนั้นคุณจึงสามารถสร้างเกณฑ์พื้นฐานใหม่เพื่อป้องกัน เกิดข้อผิดพลาดจากการตรวจไม่พบอีกครั้ง
หมายเหตุ ระบบจะเปิดใช้เกณฑ์พื้นฐานเมื่อคุณเรียกใช้การตรวจสอบในโหมดแบบกลุ่มใน IDE ระบบจะไม่สนใจเกณฑ์พื้นฐาน สำหรับการตรวจสอบในตัวแก้ไขที่ทำงานในเบื้องหลังเมื่อคุณแก้ไขไฟล์ นั่นเป็นเพราะ พื้นฐานมีไว้สำหรับกรณีที่ Codebase มีคำเตือนอยู่เป็นจำนวนมาก แต่คุณต้องการแก้ไขปัญหาภายในขณะแตะรหัส
เรียกใช้การตรวจสอบด้วยตนเอง
หากต้องการเรียกใช้ Lint ที่กำหนดค่าไว้และการตรวจสอบ IDE อื่นๆ ด้วยตนเอง ให้เลือก รหัส > ตรวจสอบโค้ด ผลการตรวจสอบจะปรากฏใน หน้าต่างผลการตรวจสอบ
กําหนดขอบเขตและโปรไฟล์การตรวจสอบ
เลือกไฟล์ที่คุณต้องการวิเคราะห์ (ขอบเขตการตรวจสอบ) และ การตรวจสอบที่ต้องการเรียกใช้ (โปรไฟล์การตรวจสอบ) ดังนี้
- ในมุมมอง Android ให้เปิดโปรเจ็กต์แล้วเลือกโปรเจ็กต์ โฟลเดอร์ หรือ ที่คุณต้องการวิเคราะห์
- จากแถบเมนู ให้เลือกโค้ด > ตรวจสอบโค้ด
ตรวจสอบการตั้งค่าในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ
วันที่ รูปที่ 3 ตรวจสอบการตั้งค่าขอบเขตการตรวจสอบ ตัวเลือกที่ปรากฏในกล่องโต้ตอบระบุขอบเขตการตรวจสอบจะแตกต่างกันไป ขึ้นอยู่กับว่าคุณได้เลือกโปรเจ็กต์ โฟลเดอร์ หรือไฟล์ ดังนี้
- เมื่อคุณเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรี 1 รายการ ระบุขอบเขตการตรวจสอบ แสดงเส้นทางไปยังโปรเจ็กต์ ไฟล์ หรือ ไดเรกทอรีที่เลือกไว้
- เมื่อคุณเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรีมากกว่า 1 รายการ ระบบจะดำเนินการระบุการตรวจสอบ กล่องโต้ตอบขอบเขตจะแสดงปุ่มตัวเลือกที่เลือกสำหรับไฟล์ที่เลือก
หากต้องการเปลี่ยนสิ่งที่ต้องตรวจสอบ ให้เลือก หนึ่งในปุ่มตัวเลือกอื่นๆ โปรดดู กล่องโต้ตอบระบุขอบเขตการตรวจสอบสำหรับคำอธิบายทั้งหมด ช่องที่เป็นไปได้ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ
- เลือกโปรไฟล์ที่ต้องการใช้ในส่วนโปรไฟล์การตรวจสอบ
คลิกตกลงเพื่อเรียกใช้การตรวจสอบ
รูปที่ 4 แสดง Lint และการตรวจสอบ IDE อื่นๆ ผลลัพธ์จากการเรียกใช้ Inspect Code
วันที่ รูปที่ 4 ผลจากการตรวจสอบ เลือกปัญหา เพื่อดูความละเอียด -
ในแผงผลการตรวจสอบ ให้ดูผลการตรวจสอบโดยการขยายและเลือก หมวดหมู่ ประเภท หรือปัญหาของข้อผิดพลาด
แผงรายงานการตรวจสอบจะแสดงรายงานการตรวจสอบสำหรับหมวดหมู่ข้อผิดพลาด ประเภท หรือปัญหาที่เลือกไว้ในแผงผลการตรวจสอบ แล้วแสดงชื่อและ ตำแหน่งของข้อผิดพลาด (หากมี) รายงานการตรวจสอบจะแสดงข้อมูลอื่นๆ เช่น เรื่องย่อของปัญหา เพื่อช่วยให้คุณสามารถแก้ไขปัญหาได้
ในมุมมองแบบต้นไม้ของแผงผลการตรวจสอบ ให้คลิกขวาที่หมวดหมู่ ประเภท หรือปัญหาเพื่อ จอแสดงผล เมนูตามบริบท
คุณสามารถทำสิ่งต่อไปนี้ได้ โดยขึ้นอยู่กับบริบท
- ข้ามไปยังแหล่งที่มา
- ยกเว้นและรวมรายการที่เลือก
- ระงับปัญหา
- แก้ไขการตั้งค่า
- จัดการการแจ้งเตือนการตรวจสอบ
- เรียกใช้การตรวจสอบอีกครั้ง
สำหรับคำอธิบายของปุ่มแถบเครื่องมือ รายการเมนูตามบริบท และการตรวจสอบ โปรดดู หน้าต่างเครื่องมือผลการตรวจสอบ
ใช้ขอบเขตที่กำหนดเอง
ใช้ขอบเขตที่กำหนดเองรายการใดรายการหนึ่งที่มีอยู่ใน Android Studio ดังนี้
- ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
คลิกรายการขอบเขตที่กำหนดเองเพื่อแสดงตัวเลือก ดังนี้
วันที่ รูปที่ 5 เลือกขอบเขตที่กำหนดเองที่คุณต้องการ ใช้งาน - สถานที่ทั้งหมด: ไฟล์ทั้งหมด
- ไฟล์โปรเจ็กต์: ไฟล์ทั้งหมดในโปรเจ็กต์ปัจจุบัน
- ไฟล์แหล่งที่มาของโปรเจ็กต์: เฉพาะไฟล์ต้นฉบับในโปรเจ็กต์ปัจจุบัน
- ไฟล์การผลิตของโปรเจ็กต์: เฉพาะไฟล์ที่ใช้งานจริงในโปรเจ็กต์ปัจจุบันเท่านั้น
- ไฟล์ทดสอบโปรเจ็กต์: เฉพาะไฟล์ทดสอบในโปรเจ็กต์ปัจจุบัน
- รอยขีดข่วนและคอนโซล: เฉพาะไฟล์ Scratch และคอนโซลที่คุณเปิดใน โปรเจ็กต์ปัจจุบัน
- ไฟล์ที่ดูล่าสุด: เฉพาะไฟล์ที่ดูล่าสุดในโปรเจ็กต์ปัจจุบัน
- ไฟล์ปัจจุบัน: เฉพาะไฟล์ปัจจุบันในโปรเจ็กต์ปัจจุบัน แสดงเมื่อคุณมี ไฟล์หรือโฟลเดอร์ที่เลือกไว้
- ไดเรกทอรีที่เลือก: เฉพาะโฟลเดอร์ปัจจุบันในโปรเจ็กต์ปัจจุบัน แสดงเมื่อคุณ มีโฟลเดอร์ที่เลือกไว้
- ลำดับชั้นของชั้นเรียน: เมื่อคุณเลือกตัวเลือกนี้และคลิกตกลง กล่องโต้ตอบจะปรากฏขึ้นพร้อม ชั้นเรียนทั้งหมดในโปรเจ็กต์ปัจจุบัน ใช้ช่องค้นหาตามชื่อในกล่องโต้ตอบ เพื่อกรองและเลือกชั้นเรียนที่จะ ตรวจสอบ หากไม่กรองรายการคลาส การตรวจสอบโค้ดจะตรวจสอบ ใหม่
หากกำหนดค่า VCS สำหรับโปรเจ็กต์ คุณจะมีตัวเลือกในการจำกัดการค้นหาด้วย ให้แสดงเฉพาะไฟล์ที่มีการแก้ไข
- คลิกตกลง
สร้างขอบเขตที่กำหนดเอง
เมื่อต้องการตรวจสอบไฟล์และไดเรกทอรีบางส่วนที่ไม่ได้อยู่ในรายการ ขอบเขตที่กำหนดเองที่พร้อมใช้งานในขณะนี้ คุณสามารถสร้างขอบเขตที่กำหนดเองได้โดยทำดังนี้
- ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
คลิกจุด 3 จุดหลังรายการขอบเขตที่กำหนดเอง
วันที่ รูปที่ 6 ระบุกล่องโต้ตอบขอบเขตการตรวจสอบ กล่องโต้ตอบขอบเขตจะปรากฏขึ้น
วันที่ รูปที่ 7 สร้างขอบเขตที่กำหนดเอง - คลิก
ที่มุมซ้ายบนของกล่องโต้ตอบเพื่อกำหนดขอบเขตใหม่
- ในรายการเพิ่มขอบเขตที่ปรากฏขึ้น ให้เลือกในเครื่อง
ขอบเขตทั้งในเครื่องและขอบเขตที่แชร์จะใช้ภายในโปรเจ็กต์สำหรับตรวจสอบโค้ด ขอบเขตที่แชร์จะใช้กับฟีเจอร์โปรเจ็กต์อื่นๆ ที่มีขอบเขตได้ด้วย ด้วย ตัวอย่างเช่น เมื่อคุณคลิกแก้ไขการตั้งค่า
เพื่อเปลี่ยน สำหรับค้นหาการใช้งาน กล่องโต้ตอบที่ปรากฏจะมีช่องขอบเขต เลือกขอบเขตที่ใช้ร่วมกัน
วันที่ รูปที่ 8 เลือกขอบเขตที่แชร์จาก กล่องโต้ตอบค้นหาการใช้งาน - ตั้งชื่อขอบเขตแล้วคลิกตกลง
แผงด้านขวาของกล่องโต้ตอบขอบเขต แสดงตัวเลือกที่ช่วยให้คุณกำหนดขอบเขตที่กำหนดเอง
- เลือกโปรเจ็กต์จากรายการ
รายการโปรเจ็กต์ที่ใช้ได้จะปรากฏขึ้น
หมายเหตุ: คุณจะสร้างขอบเขตที่กำหนดเองสำหรับโปรเจ็กต์หรือแพ็กเกจได้ กลับเหมือนกัน
ขยายโฟลเดอร์โปรเจ็กต์ เลือกรายการที่ต้องการเพิ่มไปยังขอบเขตที่กําหนดเอง แล้วเลือก ว่าจะรวมหรือยกเว้น
วันที่ รูปที่ 9 กำหนดขอบเขตที่กำหนดเอง - รวม: รวมโฟลเดอร์นี้และไฟล์ แต่ไม่รวมโฟลเดอร์นี้ โฟลเดอร์ย่อย
- รวมซ้ำ: รวมโฟลเดอร์นี้และไฟล์ รวมถึงโฟลเดอร์ย่อยและโฟลเดอร์
- ยกเว้น: ยกเว้นโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ แต่อย่ายกเว้นโฟลเดอร์นี้ โฟลเดอร์ย่อย
- ยกเว้นซ้ำ: ยกเว้นโฟลเดอร์นี้และไฟล์ รวมถึงโฟลเดอร์ย่อยและโฟลเดอร์
รูปที่ 10 แสดงให้เห็นว่ามีโฟลเดอร์ main รวมอยู่ด้วย และ java และโฟลเดอร์ res จะรวมซ้ำๆ สีน้ำเงินหมายถึงโฟลเดอร์ที่รวมอยู่บางส่วน และสีเขียว หมายถึงโฟลเดอร์และไฟล์ที่รวมอยู่ซ้ำๆ
วันที่ รูปที่ 10 รูปแบบตัวอย่างสำหรับขอบเขตที่กำหนดเอง - ถ้าคุณเลือกโฟลเดอร์ java แล้วคลิกยกเว้นซ้ำ ข้อผิดพลาดสีเขียว การไฮไลต์จะหายไปในโฟลเดอร์ java รวมถึงโฟลเดอร์และไฟล์ทั้งหมดในโฟลเดอร์นั้น
- หากคุณเลือกไฟล์ MainActivity.kt ที่ไฮไลต์สีเขียวและ คลิกยกเว้น MainActivity.kt ไม่ได้ไฮไลต์เป็นสีเขียวแล้ว รายการอื่นๆ ทั้งหมดในโฟลเดอร์ java จะยังเป็นสีเขียว
- คลิกตกลง ขอบเขตที่กำหนดเองจะปรากฏที่ด้านล่างของรายการ
ตรวจสอบและแก้ไขโปรไฟล์การตรวจสอบ
Android Studio มีตัวเลือก Lint และโปรไฟล์การตรวจสอบอื่นๆ ที่อัปเดต ผ่าน การอัปเดต Android คุณสามารถใช้โปรไฟล์เหล่านี้ตามที่เป็น หรือแก้ไขชื่อ คำอธิบาย ความรุนแรง และ ขอบเขต คุณยังสามารถเปิดและปิดใช้งานกลุ่มของโปรไฟล์ทั้งหมดหรือแต่ละโปรไฟล์ ภายในกลุ่ม
วิธีเข้าถึงการตั้งค่าการตรวจสอบ
- เลือก ไฟล์ > การตั้งค่า (บน Windows) หรือ Android Studio > ค่ากำหนด (ใน macOS หรือ Linux)
- เลือกตัวแก้ไข > การตรวจสอบ
เลือกรายการโปรไฟล์เพื่อสลับระหว่างค่าเริ่มต้น (Android Studio) กับ การตรวจสอบค่าเริ่มต้นของโปรเจ็กต์ (โปรเจ็กต์ที่ใช้งานอยู่)
สำหรับข้อมูลเพิ่มเติม โปรดดู IntelliJ หน้าจัดการโปรไฟล์
ในรายการการตรวจสอบในแผงด้านซ้าย ให้เลือกหมวดหมู่โปรไฟล์ระดับบนสุด หรือ ขยายกลุ่มและเลือกโปรไฟล์ที่ต้องการ
เมื่อเลือกหมวดหมู่โปรไฟล์ คุณจะทำสิ่งต่อไปนี้ได้ แก้ไขการตรวจสอบทั้งหมดในหมวดหมู่นั้นเป็นการตรวจสอบครั้งเดียว
- เลือกรายการแสดงการทำงานของสคีมา
เพื่อคัดลอก เปลี่ยนชื่อ เพิ่ม คำอธิบาย ส่งออก และนำเข้าการตรวจสอบ
- เมื่อเสร็จแล้ว ให้คลิกตกลง
แผงการตรวจสอบจะแสดงรายการการตรวจสอบที่รองรับและการตรวจสอบ คำอธิบาย
![การตรวจสอบที่รองรับและคำอธิบาย](https://developer.android.google.cn/static/studio/images/write/inspectionprofiles_2x.png?authuser=19&hl=th)