Можно ли получить подробную информацию с помощью инструмента Android Studio lint?

Я использую lint для проверки проекта Android-приложения:

gradlew lint

Он показывает следующее:

> Task :app:compileOfficialDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

В процессе создаются два файла: lint-results.html и lint-results.xml. Я проверил оба файла, но не смог найти никакой информации об устаревшем API. Можно ли получить более подробную информацию об устаревшем API в этих двух файлах?


person Hong    schedule 14.11.2019    source источник


Ответы (1)


Вот пример «build.gradle», который я разметил:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        multiDexEnabled true
        applicationId "com.boxpik.android"
        minSdkVersion 17
        targetSdkVersion 19
    ...
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-Xlint:all"
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
...

В этом примере я добавил options.compilerArgs << "-Xlint:all" к build.gradle.

Это дало мне кучу предупреждений Lint в моем окне «Сборка» Android Studio:

                          ^
C:\xyz\PoolToScoreDetailFragment.java:55: warning: [deprecation] ProgressDialog in android.app has been deprecated
    private ProgressDialog pDialog;
            ^
C:\xyz\PoolToScoreDetailFragment.java:346: warning: [deprecation] ProgressDialog in android.app has been deprecated
            pDialog = new ProgressDialog(application);
person paulsm4    schedule 15.11.2019
comment
Спасибо за ваш ответ. Он работает для отображения деталей моего проекта. Я думал об использовании gradlew lint в качестве плана A, и это не сработало. Я бы пошел по маршруту построения проекта в качестве плана B. Я приму ваш ответ, если для использования gradlew lint не будет ответа. Это потому, что мне нужны эти детали только изредка. - person Hong; 15.11.2019
comment
Lint и компилятор Java — это отдельные инструменты. Оба могут быть запущены из Gradle. -Xlint — это параметр командной строки компилятора Java. Это парень, который дает вам подробные сообщения. Я не говорю, что вы не можете запускать оба инструмента из одной и той же задачи Gradle, но с моей точки зрения проще просто добавить options.compilerArgs << "-Xlint:all" в build.gradle, когда я этого хочу, и закомментировать его, когда я не надо. - person paulsm4; 15.11.2019
comment
Спасибо за разъяснение. Я не знал, что это две разные вещи. Это также объясняет, почему анализ кода AS не показывает устаревшие API, которые заставили меня почесать голову минуту назад. - person Hong; 15.11.2019