Android
Lint Warnings
Поиск…
замечания
Инструмент Lint проверяет исходные файлы проекта Android на возможные ошибки и улучшает оптимизацию для правильности, безопасности, производительности, удобства использования, доступности и интернационализации. Вы можете запустить Lint из командной строки или из Android Studio.
Официальная документация:
Использование инструментов: игнорировать в xml-файлах
Инструменты атрибута tools:ignore
можно использовать в файлах xml, чтобы убрать предупреждения lint.
НО отклонение предупреждений lint с этой техникой в большинстве случаев является неправильным способом продолжения.
Предупреждение о завязке должно быть понято и исправлено ... его можно игнорировать, если и только если у вас есть полное понимание его смысла и сильная причина его игнорировать.
Вот прецедент, когда законно игнорировать предупреждение:
- Вы разрабатываете системное приложение (подписанное с ключом производителя устройства)
- Вашему приложению необходимо изменить дату устройства (или любое другое защищенное действие)
Затем вы можете сделать это в своем манифесте: (т. Е. Запрашивать защищенное разрешение и игнорировать предупреждение о линии, потому что вы знаете, что в вашем случае разрешение будет предоставлено)
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
...>
<uses-permission android:name="android.permission.SET_TIME"
tools:ignore="ProtectedPermissions"/>
Импорт ресурсов без ошибки «Устаревшая»
Используя Android API 23 или выше, очень часто можно увидеть такую ситуацию:
Эта ситуация вызвана структурными изменениями API Android в отношении получения ресурсов. Теперь функция:
public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException
должен быть использован. Но в библиотеке android.support.v4 есть другое решение.
Добавьте следующую зависимость в файл build.gradle:
com.android.support:support-v4:24.0.0
Затем доступны все методы из библиотеки поддержки:
ContextCompat.getColor(context, R.color.colorPrimaryDark);
ContextCompat.getDrawable(context, R.drawable.btn_check);
ContextCompat.getColorStateList(context, R.color.colorPrimary);
DrawableCompat.setTint(drawable);
ContextCompat.getColor(context,R.color.colorPrimaryDark));
Кроме того, можно использовать больше методов из библиотеки поддержки:
ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...
Настроить LintOptions с помощью градиента
Вы можете настроить пух, добавив lintOptions
раздел в build.gradle
файл:
android {
//.....
lintOptions {
// turn off checking the given issue id's
disable 'TypographyFractions','TypographyQuotes'
// turn on the given issue id's
enable 'RtlHardcoded','RtlCompat', 'RtlEnabled'
// check *only* the given issue id's
check 'NewApi', 'InlinedApi'
// set to true to turn off analysis progress reporting by lint
quiet true
// if true, stop the gradle build if errors are found
abortOnError false
// if true, only report errors
ignoreWarnings true
}
}
Вы можете запустить lint для определенного варианта (см. Ниже), например ./gradlew lintRelease
, или для всех вариантов ( ./gradlew lint
), и в этом случае он создает отчет, в котором описываются конкретные варианты, к которым относится данная проблема.
Проверьте здесь ссылку DSL для всех доступных опций .
Как настроить файл lint.xml
Вы можете указать свои настройки проверки Lint в файле lint.xml
. Если вы создаете этот файл вручную, поместите его в корневой каталог вашего Android-проекта. Если вы настраиваете настройки Lint в Android Studio, файл lint.xml автоматически создается и добавляется в ваш проект Android для вас.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
</lint>
Установив значение атрибута серьезности в теге, вы можете отключить проверку Lint для проблемы или изменить уровень серьезности проблемы.
В следующем примере показано содержимое файла 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>
Настройка проверки линта в исходных файлах Java и XML
Вы можете отключить проверку Lint из ваших исходных файлов Java и XML.
Настройка проверки lint в Java
Чтобы отключить проверку Lint специально для Java-класса или метода в вашем проекте Android, добавьте аннотацию @SuppressLint
к этому Java-коду.
Пример:
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Чтобы отключить проверку всех проблем Lint:
@SuppressLint("all")
Настройка проверки линта в XML
Вы можете использовать атрибуты tools:ignore
чтобы отключить проверку Lint для определенных разделов ваших XML-файлов .
Например:
tools:ignore="NewApi,StringFormatInvalid"
Чтобы подавить проверку всех проблем Lint в элементе XML, используйте
tools:ignore="all"
Отказ от комментариев
Хорошая практика отметить некоторые предупреждения в коде. Например, некоторые устаревшие методы необходимы для вашего тестирования или старой версии поддержки. Но проверка Lint отметит этот код предупреждениями. Чтобы избежать этой проблемы, вам нужно использовать аннотацию @SuppressWarnings.
Например, добавьте игнорирование предупреждений на устаревшие методы. Вы также должны указать описание предупреждений в аннотации:
@SuppressWarnings("deprecated");
public void setAnotherColor (int newColor) {
getApplicationContext().getResources().getColor(newColor)
}
Используя эту аннотацию, вы можете игнорировать все предупреждения, включая Lint, Android и другие. Использование Suppress Warnings помогает правильно понять код!