Cải thiện mã bằng công cụ tìm lỗi mã nguồn (lint)

Ngoài việc xây dựng các kiểm thử để đảm bảo ứng dụng đáp ứng các yêu cầu về mặt chức năng, bạn cũng cần đảm bảo mã của mình không gặp các vấn đề về cấu trúc bằng cách chạy mã thông qua công cụ tìm mỗi mã nguồn. Công cụ tìm lỗi mã nguồn sẽ giúp tìm những mã có cấu trúc kém, có thể ảnh hưởng đến độ tin cậy và tính hiệu quả của ứng dụng Android cũng như làm cho việc bảo trì mã trở nên khó khăn hơn.

Ví dụ: nếu các tệp tài nguyên XML chứa các không gian tên không còn dùng đến, việc này sẽ gây lãng phí dung lượng và phát sinh những công đoạn xử lý không cần thiết. Các sự cố cấu trúc khác, chẳng hạn như sử dụng các thành phần không dùng nữa hoặc các lệnh gọi API không được các phiên bản API mục tiêu hỗ trợ nữa, có thể làm mã chạy không chính xác. Công cụ tìm lỗi mã nguồn có thể giúp bạn giải quyết những sự cố này.

Để cải thiện hơn nữa hiệu quả tìm lỗi mã nguồn, bạn cũng nên thêm chú thích vào mã.

Tổng quan

Android Studio cung cấp một công cụ quét mã có tên là lint, cho phép bạn nhận diện và khắc phục các vấn đề liên quan đến chất lượng cấu trúc của mã mà không cần phải thực thi ứng dụng hoặc viết các trường hợp kiểm thử. Mỗi khi phát hiện một vấn đề nào đó, công cụ này sẽ gửi một báo cáo trong đó bao gồm thông báo mô tả nội dung và mức độ nghiêm trọng của vấn đề, giúp bạn nhanh chóng xác định mức độ ưu tiên để tiến hành những bước cải tiến quan trọng. Ngoài ra, bạn có thể giảm mức độ nghiêm trọng của một vấn đề để bỏ qua các sự cố không liên quan đến dự án, hoặc tăng mức độ nghiêm trọng để làm nổi bật các vấn đề cụ thể.

Công cụ tìm lỗi mã nguồn này sẽ kiểm tra các tệp nguồn dự án Android để phát hiện các lỗi tiềm ẩn và cải thiện tính năng tối ưu hoá nhằm đảm bảo độ chính xác, tính bảo mật, hiệu suất, độ hữu dụng, khả năng hỗ trợ tiếp cận và khả năng quốc tế hoá. Khi sử dụng Android Studio, công cụ tìm lỗi mã nguồn và các yêu cầu kiểm tra IDE sẽ được định cấu hình để chạy mỗi khi bạn tạo ứng dụng. Tuy nhiên, bạn có thể tự chạy yêu cầu kiểm tra này hoặc chạy công cụ tìm lỗi mã nguồn bằng dòng lệnh.

Lưu ý: Khi biên dịch mã, Android Studio sẽ chạy các bước kiểm tra mã IntelliJ bổ sung sẽ để tinh giản hoá quá trình xem xét và đánh giá mã.

Hình 1 cho thấy cách thức công cụ tìm lỗi mã nguồn xử lý các tệp nguồn ứng dụng.

Hình 1. Quy trình quét mã bằng công cụ tìm lỗi mã nguồn

Tệp nguồn ứng dụng
Các tệp nguồn này gồm có các tệp tạo nên dự án Android, bao gồm cả tệp Java, Kotlin, tệp XML, tệp biểu tượng và tệp cấu hình ProGuard.
Tệp lint.xml
Tệp cấu hình dùng để chỉ định các mục kiểm tra lỗi mã nguồn bạn muốn loại trừ và để tuỳ chỉnh các mức độ nghiêm trọng của vấn đề.
Công cụ tìm lỗi mã nguồn
Bạn có thể chạy công cụ quét mã tĩnh trên dự án Android bằng dòng lệnh hoặc trong Android Studio (xem phần Chạy yêu cầu kiểm tra theo cách thủ công). Công cụ tìm lỗi mã nguồn sẽ kiểm tra các vấn đề về mã cấu trúc có thể ảnh hưởng đến chất lượng và hiệu suất của ứng dụng Android. Bạn nên khắc phục triệt để các lỗi được công cụ tìm lỗi mã nguồn phát hiện trước khi phát hành ứng dụng.
Kết quả kiểm tra lỗi mã nguồn
Bạn có thể xem kết quả kiểm tra lỗi mã nguồn trong bảng điều khiển hoặc trong cửa sổ Inspection Results (Kết quả kiểm tra) trong Android Studio. Xem mục Chạy yêu cầu kiểm tra theo cách thủ công.

Chạy công cụ tìm lỗi mã nguồn bằng dòng lệnh

Nếu đang sử dụng Android Studio hoặc Gradle, bạn có thể sử dụng trình bao bọc Gradle để gọi tác vụ lint cho dự án bằng cách nhập một trong những lệnh sau trong thư mục gốc của dự án:

  • Trên Windows:
    gradlew lint
    
  • Trên Linux hoặc Mac:
    ./gradlew lint
    

Bạn sẽ thấy kết quả tương tự như dưới đây:

> Task :app:lintDebug
Wrote HTML report to file:<path-to-project>/app/build/reports/lint-results-debug.html

Khi hoàn thành các bước kiểm tra, công cụ tìm lỗi mã nguồn sẽ cung cấp đường dẫn đến các báo cáo tìm lỗi dưới các phiên bản XML và HTML. Sau đó, bạn có thể chuyển đến báo cáo HTML và mở báo cáo đó trong trình duyệt của mình, như minh họa trong hình 2.

Hình 2. Báo cáo lỗi mã nguồn mẫu dưới dạng HTML

Nếu dự án bao gồm các biến thể bản dựng thì công cụ tìm lỗi này chỉ kiểm tra biến thể mặc định. Nếu muốn chạy công cụ tìm lỗi mã nguồn trên một biến thể khác, bạn phải viết hoa tên biến thể và đặt tiền tố là "lint".

./gradlew lintRelease

Để tìm hiểu thêm về cách chạy các tác vụ Gradle bằng dòng lệnh, hãy tham khảo Tạo ứng dụng bằng dòng lệnh.

Chạy công cụ tìm lỗi mã nguồn bằng công cụ độc lập

Nếu không dùng Android Studio hoặc Gradle, bạn có thể sử dụng công cụ tìm lỗi mã nguồn độc lập sau khi cài đặt Bộ công cụ dòng lệnh SDK Android trong Trình quản lý SDK. Sau đó, bạn có thể tìm thấy công cụ tìm lỗi mã nguồn tại android_sdk/cmdline-tools/version/bin/lint.

Để chạy công cụ tìm lỗi mã nguồn với danh sách các tệp trong thư mục dự án, hãy sử dụng lệnh sau:

lint [flags] <project directory>

Ví dụ: bạn có thể tạo lệnh sau đây để quét các tệp trong thư mục myproject và các thư mục con của thư mục này. Mã nhận dạng (ID) sự cố MissingPrefix sẽ yêu cầu công cụ tìm lỗi chỉ quét những thuộc tính XML đang bị thiếu tiền tố không gian tên Android.

lint --check MissingPrefix myproject 

Để xem danh sách đầy đủ các cờ và đối số dòng lệnh được công cụ này hỗ trợ, hãy sử dụng lệnh sau:

lint --help

Ví dụ sau đây cho thấy kết quả bảng điều khiển khi chạy lệnh lint trên dự án 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

Kết quả trên liệt kê 4 cảnh báo và không có lỗi nào: 3 cảnh báo (ManifestOrder, UsesMinSdkAttributesUnusedResources) trong tệp AndroidManifest.xml của dự án và 1 cảnh báo (IconMissingDensityFolder) trong tệp bố cục Preferences.xml.

Định cấu hình công cụ tìm lỗi mã nguồn để chặn cảnh báo

Theo mặc định, khi quét lỗi mã nguồn, công cụ này sẽ kiểm tra tất cả sự cố mà công cụ tìm lỗi mã nguồn hỗ trợ. Bạn cũng có thể giới hạn các sự cố để công cụ tìm lỗi mã nguồn kiểm tra và chỉ định mức độ nghiêm trọng cho các sự cố đó. Ví dụ: bạn có thể bỏ yêu cầu kiểm tra lỗi mã nguồn đối với các sự cố không liên quan đến dự án và có thể định cấu hình cho công cụ tìm lỗi mã nguồn để báo cáo các sự cố không nghiêm trọng ở mức độ nghiêm trọng thấp hơn.

Bạn có thể định cấu hình cho yêu cầu kiểm tra lỗi mã nguồn ở các cấp độ khác nhau:

  • Toàn cục (toàn bộ dự án)
  • Mô-đun dự án
  • Mô-đun sản xuất
  • Mô-đun kiểm thử
  • Tệp đã mở
  • Hệ phân cấp lớp
  • Phạm vi Hệ thống quản lý phiên bản (VCS)

Định cấu hình công cụ tìm lỗi mã nguồn trong Android Studio

Công cụ tìm lỗi mã nguồn tích hợp sẵn sẽ kiểm tra mã trong quá trình sử dụng Android Studio. Bạn có thể xem cảnh báo và lỗi theo hai cách:

  • Dưới dạng văn bản bật lên trong Trình soạn thảo mã. Khi tìm thấy một vấn đề nào đó, công cụ tìm lỗi mã nguồn sẽ làm nổi bật mã có vấn đề đó bằng màu vàng. Đối với các sự cố nghiêm trọng hơn, công cụ tìm lỗi này sẽ gạch chân mã đó bằng màu đỏ.
  • Trong cửa sổ Inspection Results (Kết quả kiểm tra)lỗi mã nguồn sau khi bạn nhấp vào Analyze (Phân tích) > Inspect Code (Kiểm tra mã), Xem mục Chạy yêu cầu kiểm tra theo cách thủ công.

Định cấu hình tệp lint

Bạn có thể chỉ định các tuỳ chọn kiểm tra lỗi mã nguồn trong tệp lint.xml. Nếu bạn đang tạo tệp này theo cách thủ công, hãy đặt tệp này vào thư mục gốc của dự án Android.

Tệp lint.xml bao gồm một thẻ mẹ <lint> chứa một hoặc nhiều phần tử con <issue>. Công cụ tìm lỗi mã nguồn sẽ định nghĩa một giá trị thuộc tính id duy nhất cho mỗi <issue>.

<?xml version="1.0" encoding="UTF-8"?>
    <lint>
        <!-- list of issues to configure -->
</lint>

Bạn có thể thay đổi mức độ nghiêm trọng của một sự cố hoặc tắt yêu cầu kiểm tra lỗi mã nguồn cho sự cố đó bằng cách đặt thuộc tính mức độ nghiêm trọng này trong thẻ <issue>.

Mẹo: Để xem danh sách đầy đủ các sự cố được công cụ tìm lỗi mã nguồn hỗ trợ và mã nhận dạng sự cố tương ứng, hãy chạy lệnh lint --list.

Tệp lint.xml mẫu

Ví dụ sau đây trình bày nội dung của tệp lint.xml.

<?xml version="1.0" encoding="UTF-8"?>
<lint>
    <!-- Disable the given 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>

Định cấu hình cho yêu cầu kiểm tra lỗi mã nguồn trong các tệp nguồn Java, Kotlin và XML

Bạn có thể tắt tính năng kiểm tra lỗi mã nguồn cho các tệp nguồn Java, Kotlin và XML.

Mẹo: Bạn có thể quản lý tính năng kiểm tra lỗi mã nguồn cho các tệp nguồn Java, Kotlin hoặc XML trong hộp thoại Default Preferences (Tuỳ chọn mặc định). Chọn File (Tệp) > Other Settings (Cài đặt khác) > Default Settings (Cài đặt mặc định), sau đó trong ngăn bên trái của hộp thoại Default Preferences (Tuỳ chọn mặc định), hãy chọn Editor (Trình chỉnh sửa) > Inspections (Kiểm tra).

Định cấu hình cho yêu cầu kiểm tra lỗi mã nguồn trong Java hoặc Kotlin

Để tắt yêu cầu kiểm tra lỗi mã nguồn cụ thể cho một lớp hoặc phương thức trong dự án Android, hãy thêm chú thích @SuppressLint vào mã đó.

Ví dụ sau cho bạn biết cách để tắt yêu cầu kiểm tra lỗi mã nguồn đối với sự cố NewApi trong phương thức onCreate. Công cụ tìm lỗi mã nguồn này sẽ tiếp tục kiểm tra sự cố NewApi trong các phương thức khác của lớp này.

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);

Ví dụ sau đây trình bày cách tắt yêu cầu kiểm tra lỗi mã nguồn cho sự cố ParserError trong lớp FeedProvider:

Kotlin

@SuppressLint("ParserError")
class FeedProvider : ContentProvider() {

Java

@SuppressLint("ParserError")
public class FeedProvider extends ContentProvider {

Để bỏ yêu cầu kiểm tra tất cả sự cố liên quan đến lỗi mã nguồn trong tệp này, hãy sử dụng từ khoá all như sau:

Kotlin

@SuppressLint("all")

Java

@SuppressLint("all")

Định cấu hình cho yêu cầu kiểm tra lỗi mã nguồn trong XML

Bạn có thể dùng thuộc tính tools:ignore để tắt yêu cầu kiểm tra lỗi mã nguồn cho các phần cụ thể nào đó trong tệp XML. Đặt giá trị không gian tên sau đây vào tệp lint.xml để công cụ tìm lỗi mã nguồn nhận ra thuộc tính này:

namespace xmlns:tools="http://schemas.android.com/tools"

Ví dụ sau giúp bạn biết cách để tắt yêu cầu kiểm tra lỗi mã nguồn cho sự cố UnusedResources trong phần tử <LinearLayout> của tệp bố cục XML. Thuộc tính ignore được các phần tử con kế thừa từ các phần tử mẹ mà thuộc tính này được khai báo trong đó. Trong ví dụ này, tính năng kiểm tra lỗi mã nguồn cũng bị vô hiệu hoá cho phần tử con <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>

Để tắt tính năng kiểm tra này cho nhiều sự cố, hãy liệt kê các sự cố cần vô hiệu hoá trong một chuỗi và được phân tách nhau bằng dấu phẩy. Ví dụ:

tools:ignore="NewApi,StringFormatInvalid"

Để bỏ yêu cầu kiểm tra tất cả sự cố về lỗi mã nguồn trong phần tử XML, hãy sử dụng từ khoá all, như sau:

tools:ignore="all"

Định cấu hình tuỳ chọn tìm lỗi mã nguồn với Gradle

Trình bổ trợ Android cho Gradle cho phép bạn định cấu hình một số tuỳ chọn tìm lỗi mã nguồn, chẳng hạn như những tính năng nào cần kiểm tra hoặc bỏ qua, bằng cách sử dụng khối lint{} trong cấp tệp build.gradle cấp mô đun. Đoạn mã sau đây cho bạn thấy một số thuộc tính có thể định cấu hình:

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 true, only report errors.
        ignoreWarnings true
        // If true, lint also checks all dependencies as part of its analysis. Recommended for
        // projects consisting of an app with library dependencies.
        checkDependencies true
    }
}
...

Kotlin

android {
    ...
    lintOptions {
        // Turns off checks for the issue IDs you specify.
        disable("TypographyFractions")
        disable("TypographyQuotes")
        // Turns on checks for the issue IDs you specify. These checks are in
        // addition to the default lint checks.
        enable("RtlHardcoded")
        enable("RtlCompat")
        enable("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 true, only report errors.
        ignoreWarnings = true
        // If true, lint also checks all dependencies as part of its analysis. Recommended for
        // projects consisting of an app with library dependencies.
        isCheckDependencies = true
    }
}
...

Tất cả phương thức tìm lỗi mã nguồn dùng để ghi đè mức độ nghiêm trọng có sẵn của một sự cố – enable, disable/ignore, informational, warning, error, fatal—đều tuân theo thứ tự cấu hình. Ví dụ: thao tác thiết lập một sự cố là nghiêm trọng trong phương thức finalizeDsl() sẽ ghi đè thao tác vô hiệu hoá vấn đề này trong DSL chính.

Tạo đường cơ sở cảnh báo (warnings baseline)

Bạn có thể chụp nhanh bộ cảnh báo hiện tại của dự án, sau đó sử dụng ảnh chụp nhanh này làm đường cơ sở cho các lượt chạy yêu cầu kiểm tra trong tương lai, nhờ đó chỉ cần báo cáo các sự cố mới xuất hiện. Ảnh chụp nhanh đường cơ sở cho phép bạn bắt đầu sử dụng công cụ tìm lỗi mã nguồn để xác định bản dựng không đạt yêu cầu mà không cần phải quay lại và giải quyết tất cả sự cố hiện có trước.

Để tạo ảnh chụp nhanh đường cơ sở, hãy chỉnh sửa tệp build.gradle của dự án như sau.

Groovy

android {
    lintOptions {
        baseline file("lint-baseline.xml")
    }
}

Kotlin

android {
    lintOptions {
        baseline(file("lint-baseline.xml"))
    }
}

Khi bạn thêm dòng này lần đầu tiên, tệp lint-baseline.xml sẽ được tạo để thiết lập đường cơ sở. Từ đó về sau, các công cụ chỉ đọc tệp này để xác định đường cơ sở. Nếu bạn muốn tạo đường cơ sở mới, hãy xoá tệp này theo cách thủ công và chạy lại công cụ tìm lỗi mã nguồn để tạo lại tệp này.

Sau đó, chạy công cụ tìm lỗi mã nguồn trong IDE (Analyze (Phân tích) > Inspect Code (Kiểm tra mã)) hoặc chạy bằng dòng lệnh như sau. Kết quả đầu ra sẽ in vị trí của tệp lint-baseline.xml. Vị trí tệp theo cách thiết lập của bạn có thể khác với thông tin trình bày ở đây.

$ ./gradlew lintDebug

...

Wrote XML report to file:///app/lint-baseline.xml
Created baseline file /app/lint-baseline.xml

Thao tác chạy lint sẽ ghi lại tất cả sự cố hiện tại trong tệp lint-baseline.xml. Tập hợp các sự cố hiện tại được gọi là đường cơ sở và bạn có thể kiểm tra tệp lint-baseline.xml trong phần kiểm soát phiên bản nếu muốn chia sẻ tệp này với người khác.

Tuỳ chỉnh đường cơ sở

Nếu chỉ thêm một số loại sự cố vào đường cơ sở chứ không phải tất cả loại sự cố, bạn có thể chỉ định các sự cố cần thêm bằng cách chỉnh sửa build.gradle của dự án như dưới đây.

Groovy

android {
    lintOptions {
        checkOnly 'NewApi', 'HandlerLeak'
        baseline file("lint-baseline.xml")
    }
}

Kotlin

android {
    lintOptions {
        checkOnly("NewApi", "HandlerLeak")
        baseline = file("lint-baseline.xml")
    }
}

Sau khi tạo đường cơ sở, nếu bạn thêm bất kỳ cảnh báo mới nào vào cơ sở mã (codebase) thì công cụ tìm lỗi mã nguồn sẽ chỉ liệt kê các lỗi mới phát sinh.

Cảnh báo đường cơ sở

Khi đường cơ sở có hiệu lực, bạn sẽ nhận được cảnh báo cho biết rằng một hoặc nhiều sự cố được lọc ra vì đã được liệt kê trong đường cơ sở. Cảnh báo này xuất hiện nhằm mục đích giúp bạn nhớ lại rằng bạn đã định cấu hình một đường cơ sở, vì tốt nhất bạn nên khắc phục tất cả sự cố này vào một thời điểm nào đó.

Cảnh báo này không chỉ giúp bạn biết chính xác số lượng lỗi và cảnh báo đã được lọc ra mà còn theo dõi các sự cố không được báo cáo nữa. Thông tin này cho biết liệu bạn đã thực sự khắc phục sự cố hay chưa. Vì vậy, bạn có thể tuỳ ý tạo lại đường cơ sở để ngăn ngừa tình huống lỗi tiếp tục xảy ra nhưng không phát hiện được.

Lưu ý: Đường cơ sở sẽ được bật khi bạn chạy các yêu cầu kiểm tra ở chế độ hàng loạt trong IDE. Tuy nhiên, các đường cơ sở này sẽ bị bỏ qua đối với các bước kiểm tra trong trình chỉnh sửa chạy trong nền khi bạn chỉnh sửa tệp. Lý do là đường cơ sở chỉ dành cho trường hợp cơ sở mã có rất nhiều cảnh báo, nhưng bạn muốn khắc phục các sự cố cục bộ ngay khi tiếp xúc với mã.

Chạy yêu cầu kiểm tra theo cách thủ công

Bạn có thể tự chạy công cụ tìm lỗi mã nguồn đã định cấu hình và các yêu cầu kiểm tra IDE khác bằng cách chọn Analyze (Phân tích) > Inspect Code (Kiểm tra mã). Kết quả kiểm tra sẽ xuất hiện trong cửa sổ Inspection Results (Kết quả kiểm tra).

Thiết lập phạm vi và hồ sơ kiểm tra

Chọn tệp bạn muốn phân tích (phạm vi kiểm tra(inspection scope)) và các yêu cầu kiểm tra mà bạn muốn chạy (hồ sơ kiểm tra (inspection profile)) như sau:

  1. Trong chế độ xem Android, mở dự án rồi chọn dự án, thư mục hoặc tệp bạn muốn phân tích.
  2. Trên thanh trình đơn, chọn Analyze (Phân tích) > Inspect Code (Kiểm tra mã).
  3. Trong hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra), xem lại các chế độ cài đặt. Chỉ định phạm vi kiểm tra

    Hình 3. Xem lại các chế độ cài đặt phạm vi kiểm tra

    Việc kết hợp các tuỳ chọn xuất hiện trong hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra) sẽ khác nhau tuỳ thuộc vào việc bạn chọn dự án, thư mục hay tệp. Bạn có thể thay đổi nội dung cần kiểm tra bằng cách chọn một trong các nút chọn khác. Hãy xem hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra) để biết nội dung mô tả về tất cả những trường có thể xuất hiện trên hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra).

    • Khi bạn chọn một dự án, tệp hoặc thư mục, hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra) sẽ hiển thị đường dẫn đến Dự án, Tệp hoặc Thư mục bạn đã chọn.
    • Khi chọn nhiều dự án, tệp hoặc thư mục, hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra) sẽ hiển thị nút chọn đã đánh dấu cho Các tệp đã chọn.
  4. Trong mục Inspection profile (Hồ sơ kiểm tra), giữ lại hồ sơ mặc định (Project Default (Mặc định của dự án)).
  5. Nhấp vào OK để chạy yêu cầu kiểm tra. Hình 4 cho thấy kết quả kiểm tra lỗi mã nguồn và các yêu cầu kiểm tra IDE khác trong lần chạy Inspect Code (Kiểm tra mã):

    Hình 4. Chọn một sự cố nào đó để xem cách xử lý

  6. Ở chế độ xem dạng cây của ngăn bên trái, xem kết quả kiểm tra bằng cách mở rộng và chọn các danh mục lỗi, loại và sự cố.

    Ngăn bên phải sẽ hiển thị báo cáo kiểm tra cho danh mục lỗi, loại hoặc sự cố đã chọn, đồng thời cung cấp tên và vị trí xảy ra lỗi. Nếu có thể, báo cáo kiểm tra sẽ hiển thị các thông tin khác như bản tóm tắt vấn đề, nhằm hỗ trợ bạn khắc phục vấn đề đó.

  7. Trong chế độ xem dạng cây của ngăn bên trái, nhấp chuột phải vào một danh mục, loại hoặc sự cố để hiển thị trình đơn ngữ cảnh.

    Tuỳ thuộc vào ngữ cảnh, bạn có thể thực hiện tất cả hoặc một số thao tác sau: chuyển đến nguồn, loại trừ và thêm các mục đã chọn, bỏ các vấn đề, chỉnh sửa thông tin cài đặt, quản lý các cảnh báo kiểm tra và chạy lại yêu cầu kiểm tra.

Để biết nội dung mô tả về các nút trên thanh công cụ ở bên trái, các mục trong trình đơn ngữ cảnh và các trường báo cáo kiểm tra, hãy xem Inspection Tool Window (Cửa sổ công cụ kiểm tra).

Sử dụng phạm vi tuỳ chỉnh

Bạn có thể sử dụng một trong các phạm vi tuỳ chỉnh được Android Studio cung cấp như dưới đây:

  1. Trong hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra), nhấp vào Custom scope (Phạm vi tuỳ chỉnh).
  2. Nhấp vào danh sách Custom scope (Phạm vi tuỳ chỉnh) thả xuống để hiển thị các tuỳ chọn.

    Chọn phạm vi kiểm tra

    Hình 5. Chọn phạm vi tuỳ chỉnh bạn muốn sử dụng

    • Project Files (Tệp dự án): Tất cả tệp trong dự án hiện tại.
    • Project Production Files (Tệp sản xuất của dự án): Chỉ những tệp sản xuất trong dự án hiện tại.
    • Project Test Files (Các tệp kiểm thử của dự án): Chỉ những tệp kiểm thử trong dự án hiện tại. Tham khảo Vị trí và loại kiểm thử.
    • Open Files (Tệp đã mở): Chỉ những tệp bạn đang mở trong dự án hiện tại.
    • Module (Mô-đun)<your-modules>: Chỉ những tệp trong thư mục mô-đun tương ứng trong dự án hiện tại.
    • Current File (Tệp hiện tại): Chỉ tệp hiện tại trong dự án hiện tại. Xuất hiện khi bạn chọn một tệp hoặc thư mục.
    • Class Hierarchy (Hệ phân cấp lớp): Khi bạn chọn tuỳ chọn này và nhấp vào OK, một hộp thoại sẽ xuất hiện với tất cả lớp trong dự án hiện tại. Dùng trường Search by Name (Tìm kiếm theo tên) trong hộp thoại này để lọc và chọn các lớp cần kiểm tra. Nếu không lọc danh sách lớp thì yêu cầu kiểm tra mã sẽ thực hiện cho toàn bộ các lớp này.
  3. Nhấp vào OK.

Tạo phạm vi tuỳ chỉnh

Nếu muốn kiểm tra một tệp và thư mục không thuộc phạm vi tuỳ chỉnh hiện có nào, bạn có thể tạo một phạm vi tuỳ chỉnh.

  1. Trong hộp thoại Specify Inspection Scope (Chỉ định phạm vi kiểm tra), chọn Custom scope (Phạm vi tuỳ chỉnh).
  2. Nhấp vào biểu tượng ba dấu chấm sau danh sách thả xuống Custom Scope (Phạm vi tuỳ chỉnh).

    Hình 6. Chỉ định hộp thoại Inspection Scope (Phạm vi kiểm tra)

    Hộp thoại Scopes (Phạm vi) xuất hiện.

    Hình 7. Tạo phạm vi tuỳ chỉnh

  3. Nhấp vào biểu tượng Add (Thêm) để định nghĩa một phạm vi mới.
  4. Trong danh sách thả xuống Add Scope (Thêm phạm vi), chọn Local (Cục bộ).

    Cả phạm vi cục bộ và phạm vi dùng chung đều được sử dụng trong dự án cho tính năng Inspect Code (Kiểm tra mã). Bạn cũng có thể dùng phạm vi Shared (Dùng chung) với các tính năng khác của dự án có chứa trường phạm vi. Ví dụ: khi nhấp vào Edit Settings (Chỉnh sửa cài đặt) để thay đổi chế độ cài đặt cho Find Usages (Tìm trường hợp sử dụng), hộp thoại nhận được sẽ có trường Scope (Phạm vi). Tại đây, bạn có thể chọn một phạm vi dùng chung.

    Hình 8. Chọn phạm vi chia sẻ từ hộp thoại Find Usages (Tìm cách dùng)

  5. Đặt tên cho phạm vi rồi nhấp vào OK.

    Ngăn bên phải của hộp thoại Scopes (Phạm vi) sẽ điền sẵn các tuỳ chọn, cho phép bạn định nghĩa phạm vi tuỳ chỉnh.

  6. Trong danh sách thả xuống, chọn Project (Dự án).

    Bạn sẽ thấy xuất hiện danh sách các dự án có sẵn.

    Lưu ý: Bạn có thể tạo phạm vi tuỳ chỉnh cho dự án hoặc gói. Các bước thực hiện đều giống nhau.

  7. Mở rộng các thư mục dự án, chọn nội dung bạn muốn thêm vào phạm vi tuỳ chỉnh và nhấp vào một trong các nút ở bên phải.

    Hình 9. Định nghĩa phạm vi tuỳ chỉnh

    • Include (Bao gồm): Bao gồm thư mục này và các tệp trong thư mục này nhưng không bao gồm thư mục con.
    • Include Recursively (Bao gồm đệ quy): Bao gồm thư mục này và tất cả tệp cũng như thư mục con và các tệp trong thư mục con đó.
    • Exclude (Loại trừ): Loại trừ thư mục này và các tệp trong thư mục này nhưng không loại trừ các thư mục con trong thư mục này.
    • Exclude Recursively (Loại trừ đệ quy): Loại trừ thư mục này và tất cả tệp cũng như thư mục con và các tệp trong thư mục con đó.

    Hình 10 cho thấy phạm vị tuỳ chỉnh của thư mục main là bao gồm và thư mục java là bao gồm đệ quy. Màu xanh lam cho biết các thư mục được bao gồm một phần và màu xanh lục cho biết các thư mục và tệp thuộc phạm vi bao gồm đệ quy.

    Hình 10. Mẫu ví dụ cho phạm vi tuỳ chỉnh

    • Nếu bạn chọn thư mục java và nhấp vào Exclude Recursively (Loại trừ đệ quy) thì phần đánh dấu màu xanh lục sẽ biến mất trên thư mục java cùng với tất cả thư mục và tệp trong thư mục đó.
    • Thay vào đó, nếu bạn chọn tệp MainActivity.java được đánh dấu màu xanh lục và nhấp vào Exclude (Loại trừ),MainActivity.java sẽ không còn được đánh dấu màu xanh lục nhưng mọi tệp khác trong thư mục java sẽ được đánh dấu màu xanh lục.
  8. Nhấp vào OK. Phạm vi tuỳ chỉnh sẽ xuất hiện ở cuối danh sách thả xuống.

Xem lại và chỉnh sửa hồ sơ kiểm tra

Android Studio cung cấp lựa chọn tìm lỗi mã nguồn và các hồ sơ kiểm tra khác được cập nhật qua các bản cập nhật Android. Bạn có thể sử dụng những hồ sơ này như hiện có hoặc chỉnh sửa một số thông tin như tên, nội dung mô tả, mức độ nghiêm trọng và phạm vi. Bạn cũng có thể kích hoạt và huỷ kích hoạt toàn bộ nhóm hồ sơ hoặc từng hồ sơ trong một nhóm.

Cách truy cập vào hộp thoại Inspections (Kiểm tra):

  1. Chọn Analyze (Phân tích) > Inspect Code (Kiểm tra mã).
  2. Trong hộp thoại Specify Scope (Chỉ định phạm vi) trong Inspection Profile (Hồ sơ kiểm tra), nhấp vào More (Thêm nữa).

    Hộp thoại Inspections (Kiểm tra) xuất hiện với danh sách các yêu cầu kiểm tra được hỗ trợ kèm theo thông tin mô tả.

    Hình 11. Các yêu cầu kiểm tra được hỗ trợ và nội dung mô tả

  3. Chọn danh sách thả xuống Profile (Hồ sơ) để chuyển đổi giữa các chế độ kiểm tra Default (Mặc định) (Android Studio) và Project Default (Mặc định của dự án) (dự án đang hoạt động). Để tìm hiểu thêm thông tin, hãy tham khảo trang IntelliJ Specify Inspection Scope Dialog (Chỉ định hộp thoại kiểm tra phạm vi).
  4. Trong hộp thoại Inspections (Kiểm tra) ở ngăn bên trái, chọn một danh mục hồ sơ cấp cao nhất hoặc mở rộng một nhóm rồi chọn một hồ sơ cụ thể. Khi chọn một danh mục hồ sơ, bạn có thể chỉnh sửa tất cả yêu cầu kiểm tra trong danh mục đó thành một yêu cầu kiểm tra duy nhất.
  5. Chọn danh sách thả xuống Manage (Quản lý) để sao chép, đổi tên, thêm nội dung mô tả, xuất và nhập các yêu cầu kiểm tra.
  6. Sau khi hoàn tất, nhấp vào OK.