ปรับปรุงโค้ดโดยใช้ Lint ตรวจสอบ

นอกเหนือจากการสร้างการทดสอบ ที่จะตรวจสอบว่าแอปของคุณเป็นไปตามข้อกำหนดฟังก์ชัน คุณต้องเรียกใช้โค้ดผ่านเครื่องมือ 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
รูปที่ 1 เวิร์กโฟลว์การสแกนโค้ดด้วย Lint
ไฟล์แหล่งที่มาของแอป
ไฟล์ต้นฉบับประกอบด้วยไฟล์ต่างๆ ที่รวมอยู่ในโปรเจ็กต์ 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
รูปที่ 2 ตัวอย่างรายงาน Lint ของ HTML

หากโครงการของคุณมี 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
คำเตือน 1 รายการเกี่ยวข้องกับไฟล์เลย์เอาต์ 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 ได้ ในกล่องโต้ตอบค่ากำหนด ให้ทำดังนี้

  1. เลือก ไฟล์ > การตั้งค่า (ใน Windows) หรือ Android Studio > ค่ากำหนด (ใน macOS หรือ Linux)
  2. เลือกตัวแก้ไข > การตรวจสอบ
  3. หากต้องการปิดใช้ ให้ยกเลิกการเลือกไฟล์แหล่งที่มาที่เหมาะสม

คุณสามารถตั้งค่าแท็กเหล่านี้สำหรับ 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 อื่นๆ ด้วยตนเอง ให้เลือก รหัส > ตรวจสอบโค้ด ผลการตรวจสอบจะปรากฏใน หน้าต่างผลการตรวจสอบ

กําหนดขอบเขตและโปรไฟล์การตรวจสอบ

เลือกไฟล์ที่คุณต้องการวิเคราะห์ (ขอบเขตการตรวจสอบ) และ การตรวจสอบที่ต้องการเรียกใช้ (โปรไฟล์การตรวจสอบ) ดังนี้

  1. ในมุมมอง Android ให้เปิดโปรเจ็กต์แล้วเลือกโปรเจ็กต์ โฟลเดอร์ หรือ ที่คุณต้องการวิเคราะห์
  2. จากแถบเมนู ให้เลือกโค้ด > ตรวจสอบโค้ด
  3. ตรวจสอบการตั้งค่าในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ

    วันที่ ระบุขอบเขตการตรวจสอบ
    รูปที่ 3 ตรวจสอบการตั้งค่าขอบเขตการตรวจสอบ

    ตัวเลือกที่ปรากฏในกล่องโต้ตอบระบุขอบเขตการตรวจสอบจะแตกต่างกันไป ขึ้นอยู่กับว่าคุณได้เลือกโปรเจ็กต์ โฟลเดอร์ หรือไฟล์ ดังนี้

    • เมื่อคุณเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรี 1 รายการ ระบุขอบเขตการตรวจสอบ แสดงเส้นทางไปยังโปรเจ็กต์ ไฟล์ หรือ ไดเรกทอรีที่เลือกไว้
    • เมื่อคุณเลือกโปรเจ็กต์ ไฟล์ หรือไดเรกทอรีมากกว่า 1 รายการ ระบบจะดำเนินการระบุการตรวจสอบ กล่องโต้ตอบขอบเขตจะแสดงปุ่มตัวเลือกที่เลือกสำหรับไฟล์ที่เลือก

    หากต้องการเปลี่ยนสิ่งที่ต้องตรวจสอบ ให้เลือก หนึ่งในปุ่มตัวเลือกอื่นๆ โปรดดู กล่องโต้ตอบระบุขอบเขตการตรวจสอบสำหรับคำอธิบายทั้งหมด ช่องที่เป็นไปได้ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ

  4. เลือกโปรไฟล์ที่ต้องการใช้ในส่วนโปรไฟล์การตรวจสอบ
  5. คลิกตกลงเพื่อเรียกใช้การตรวจสอบ

    รูปที่ 4 แสดง Lint และการตรวจสอบ IDE อื่นๆ ผลลัพธ์จากการเรียกใช้ Inspect Code

    วันที่ เลือกปัญหาเพื่อดูวิธีแก้ปัญหา
    รูปที่ 4 ผลจากการตรวจสอบ เลือกปัญหา เพื่อดูความละเอียด
  6. ในแผงผลการตรวจสอบ ให้ดูผลการตรวจสอบโดยการขยายและเลือก หมวดหมู่ ประเภท หรือปัญหาของข้อผิดพลาด

    แผงรายงานการตรวจสอบจะแสดงรายงานการตรวจสอบสำหรับหมวดหมู่ข้อผิดพลาด ประเภท หรือปัญหาที่เลือกไว้ในแผงผลการตรวจสอบ แล้วแสดงชื่อและ ตำแหน่งของข้อผิดพลาด (หากมี) รายงานการตรวจสอบจะแสดงข้อมูลอื่นๆ เช่น เรื่องย่อของปัญหา เพื่อช่วยให้คุณสามารถแก้ไขปัญหาได้

  7. ในมุมมองแบบต้นไม้ของแผงผลการตรวจสอบ ให้คลิกขวาที่หมวดหมู่ ประเภท หรือปัญหาเพื่อ จอแสดงผล เมนูตามบริบท

    คุณสามารถทำสิ่งต่อไปนี้ได้ โดยขึ้นอยู่กับบริบท

    • ข้ามไปยังแหล่งที่มา
    • ยกเว้นและรวมรายการที่เลือก
    • ระงับปัญหา
    • แก้ไขการตั้งค่า
    • จัดการการแจ้งเตือนการตรวจสอบ
    • เรียกใช้การตรวจสอบอีกครั้ง

สำหรับคำอธิบายของปุ่มแถบเครื่องมือ รายการเมนูตามบริบท และการตรวจสอบ โปรดดู หน้าต่างเครื่องมือผลการตรวจสอบ

ใช้ขอบเขตที่กำหนดเอง

ใช้ขอบเขตที่กำหนดเองรายการใดรายการหนึ่งที่มีอยู่ใน Android Studio ดังนี้

  1. ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
  2. คลิกรายการขอบเขตที่กำหนดเองเพื่อแสดงตัวเลือก ดังนี้

    วันที่ เลือกขอบเขตการตรวจสอบ
    รูปที่ 5 เลือกขอบเขตที่กำหนดเองที่คุณต้องการ ใช้งาน
    • สถานที่ทั้งหมด: ไฟล์ทั้งหมด
    • ไฟล์โปรเจ็กต์: ไฟล์ทั้งหมดในโปรเจ็กต์ปัจจุบัน
    • ไฟล์แหล่งที่มาของโปรเจ็กต์: เฉพาะไฟล์ต้นฉบับในโปรเจ็กต์ปัจจุบัน
    • ไฟล์การผลิตของโปรเจ็กต์: เฉพาะไฟล์ที่ใช้งานจริงในโปรเจ็กต์ปัจจุบันเท่านั้น
    • ไฟล์ทดสอบโปรเจ็กต์: เฉพาะไฟล์ทดสอบในโปรเจ็กต์ปัจจุบัน
    • รอยขีดข่วนและคอนโซล: เฉพาะไฟล์ Scratch และคอนโซลที่คุณเปิดใน โปรเจ็กต์ปัจจุบัน
    • ไฟล์ที่ดูล่าสุด: เฉพาะไฟล์ที่ดูล่าสุดในโปรเจ็กต์ปัจจุบัน
    • ไฟล์ปัจจุบัน: เฉพาะไฟล์ปัจจุบันในโปรเจ็กต์ปัจจุบัน แสดงเมื่อคุณมี ไฟล์หรือโฟลเดอร์ที่เลือกไว้
    • ไดเรกทอรีที่เลือก: เฉพาะโฟลเดอร์ปัจจุบันในโปรเจ็กต์ปัจจุบัน แสดงเมื่อคุณ มีโฟลเดอร์ที่เลือกไว้
    • ลำดับชั้นของชั้นเรียน: เมื่อคุณเลือกตัวเลือกนี้และคลิกตกลง กล่องโต้ตอบจะปรากฏขึ้นพร้อม ชั้นเรียนทั้งหมดในโปรเจ็กต์ปัจจุบัน ใช้ช่องค้นหาตามชื่อในกล่องโต้ตอบ เพื่อกรองและเลือกชั้นเรียนที่จะ ตรวจสอบ หากไม่กรองรายการคลาส การตรวจสอบโค้ดจะตรวจสอบ ใหม่

    หากกำหนดค่า VCS สำหรับโปรเจ็กต์ คุณจะมีตัวเลือกในการจำกัดการค้นหาด้วย ให้แสดงเฉพาะไฟล์ที่มีการแก้ไข

  3. คลิกตกลง

สร้างขอบเขตที่กำหนดเอง

เมื่อต้องการตรวจสอบไฟล์และไดเรกทอรีบางส่วนที่ไม่ได้อยู่ในรายการ ขอบเขตที่กำหนดเองที่พร้อมใช้งานในขณะนี้ คุณสามารถสร้างขอบเขตที่กำหนดเองได้โดยทำดังนี้

  1. ในกล่องโต้ตอบระบุขอบเขตการตรวจสอบ ให้เลือกขอบเขตที่กำหนดเอง
  2. คลิกจุด 3 จุดหลังรายการขอบเขตที่กำหนดเอง

    วันที่ กล่องโต้ตอบระบุขอบเขตการตรวจสอบ
    รูปที่ 6 ระบุกล่องโต้ตอบขอบเขตการตรวจสอบ

    กล่องโต้ตอบขอบเขตจะปรากฏขึ้น

    วันที่ สร้างขอบเขตที่กำหนดเอง
    รูปที่ 7 สร้างขอบเขตที่กำหนดเอง
  3. คลิก ที่มุมซ้ายบนของกล่องโต้ตอบเพื่อกำหนดขอบเขตใหม่
  4. ในรายการเพิ่มขอบเขตที่ปรากฏขึ้น ให้เลือกในเครื่อง

    ขอบเขตทั้งในเครื่องและขอบเขตที่แชร์จะใช้ภายในโปรเจ็กต์สำหรับตรวจสอบโค้ด ขอบเขตที่แชร์จะใช้กับฟีเจอร์โปรเจ็กต์อื่นๆ ที่มีขอบเขตได้ด้วย ด้วย ตัวอย่างเช่น เมื่อคุณคลิกแก้ไขการตั้งค่า เพื่อเปลี่ยน สำหรับค้นหาการใช้งาน กล่องโต้ตอบที่ปรากฏจะมีช่องขอบเขต เลือกขอบเขตที่ใช้ร่วมกัน

    วันที่ เลือกขอบเขตที่แชร์จากกล่องโต้ตอบ &quot;ค้นหาการใช้งาน&quot;
    รูปที่ 8 เลือกขอบเขตที่แชร์จาก กล่องโต้ตอบค้นหาการใช้งาน
  5. ตั้งชื่อขอบเขตแล้วคลิกตกลง

    แผงด้านขวาของกล่องโต้ตอบขอบเขต แสดงตัวเลือกที่ช่วยให้คุณกำหนดขอบเขตที่กำหนดเอง

  6. เลือกโปรเจ็กต์จากรายการ

    รายการโปรเจ็กต์ที่ใช้ได้จะปรากฏขึ้น

    หมายเหตุ: คุณจะสร้างขอบเขตที่กำหนดเองสำหรับโปรเจ็กต์หรือแพ็กเกจได้ กลับเหมือนกัน

  7. ขยายโฟลเดอร์โปรเจ็กต์ เลือกรายการที่ต้องการเพิ่มไปยังขอบเขตที่กําหนดเอง แล้วเลือก ว่าจะรวมหรือยกเว้น

    วันที่ กำหนดขอบเขตที่กำหนดเอง
    รูปที่ 9 กำหนดขอบเขตที่กำหนดเอง
    • รวม: รวมโฟลเดอร์นี้และไฟล์ แต่ไม่รวมโฟลเดอร์นี้ โฟลเดอร์ย่อย
    • รวมซ้ำ: รวมโฟลเดอร์นี้และไฟล์ รวมถึงโฟลเดอร์ย่อยและโฟลเดอร์
    • ยกเว้น: ยกเว้นโฟลเดอร์นี้และไฟล์ในโฟลเดอร์ แต่อย่ายกเว้นโฟลเดอร์นี้ โฟลเดอร์ย่อย
    • ยกเว้นซ้ำ: ยกเว้นโฟลเดอร์นี้และไฟล์ รวมถึงโฟลเดอร์ย่อยและโฟลเดอร์

    รูปที่ 10 แสดงให้เห็นว่ามีโฟลเดอร์ main รวมอยู่ด้วย และ java และโฟลเดอร์ res จะรวมซ้ำๆ สีน้ำเงินหมายถึงโฟลเดอร์ที่รวมอยู่บางส่วน และสีเขียว หมายถึงโฟลเดอร์และไฟล์ที่รวมอยู่ซ้ำๆ

    วันที่ รูปแบบตัวอย่างสำหรับขอบเขตที่กำหนดเอง
    รูปที่ 10 รูปแบบตัวอย่างสำหรับขอบเขตที่กำหนดเอง
    • ถ้าคุณเลือกโฟลเดอร์ java แล้วคลิกยกเว้นซ้ำ ข้อผิดพลาดสีเขียว การไฮไลต์จะหายไปในโฟลเดอร์ java รวมถึงโฟลเดอร์และไฟล์ทั้งหมดในโฟลเดอร์นั้น
    • หากคุณเลือกไฟล์ MainActivity.kt ที่ไฮไลต์สีเขียวและ คลิกยกเว้น MainActivity.kt ไม่ได้ไฮไลต์เป็นสีเขียวแล้ว รายการอื่นๆ ทั้งหมดในโฟลเดอร์ java จะยังเป็นสีเขียว
  8. คลิกตกลง ขอบเขตที่กำหนดเองจะปรากฏที่ด้านล่างของรายการ

ตรวจสอบและแก้ไขโปรไฟล์การตรวจสอบ

Android Studio มีตัวเลือก Lint และโปรไฟล์การตรวจสอบอื่นๆ ที่อัปเดต ผ่าน การอัปเดต Android คุณสามารถใช้โปรไฟล์เหล่านี้ตามที่เป็น หรือแก้ไขชื่อ คำอธิบาย ความรุนแรง และ ขอบเขต คุณยังสามารถเปิดและปิดใช้งานกลุ่มของโปรไฟล์ทั้งหมดหรือแต่ละโปรไฟล์ ภายในกลุ่ม

วิธีเข้าถึงการตั้งค่าการตรวจสอบ

  1. เลือก ไฟล์ > การตั้งค่า (บน Windows) หรือ Android Studio > ค่ากำหนด (ใน macOS หรือ Linux)
  2. เลือกตัวแก้ไข > การตรวจสอบ
  3. แผงการตรวจสอบจะแสดงรายการการตรวจสอบที่รองรับและการตรวจสอบ คำอธิบาย

    วันที่ การตรวจสอบที่รองรับและคำอธิบาย
    รูปที่ 11 การตรวจสอบที่รองรับและ คำอธิบาย
  4. เลือกรายการโปรไฟล์เพื่อสลับระหว่างค่าเริ่มต้น (Android Studio) กับ การตรวจสอบค่าเริ่มต้นของโปรเจ็กต์ (โปรเจ็กต์ที่ใช้งานอยู่)

    สำหรับข้อมูลเพิ่มเติม โปรดดู IntelliJ หน้าจัดการโปรไฟล์

  5. ในรายการการตรวจสอบในแผงด้านซ้าย ให้เลือกหมวดหมู่โปรไฟล์ระดับบนสุด หรือ ขยายกลุ่มและเลือกโปรไฟล์ที่ต้องการ

    เมื่อเลือกหมวดหมู่โปรไฟล์ คุณจะทำสิ่งต่อไปนี้ได้ แก้ไขการตรวจสอบทั้งหมดในหมวดหมู่นั้นเป็นการตรวจสอบครั้งเดียว

  6. เลือกรายการแสดงการทำงานของสคีมา แสดงไอคอนการดำเนินการของสคีมา เพื่อคัดลอก เปลี่ยนชื่อ เพิ่ม คำอธิบาย ส่งออก และนำเข้าการตรวจสอบ
  7. เมื่อเสร็จแล้ว ให้คลิกตกลง