Android
Ostrzeżenia Lint
Szukaj…
Uwagi
Narzędzie Lint sprawdza pliki źródłowe projektu Androida pod kątem potencjalnych błędów i ulepszeń optymalizacji pod kątem poprawności, bezpieczeństwa, wydajności, użyteczności, dostępności i internacjonalizacji. Możesz uruchomić Lint z wiersza polecenia lub z Android Studio.
Oficjalna dokumentacja:
Korzystanie z narzędzi: zignoruj w plikach xml
tools:ignore
atrybutów tools:ignore
mogą być używane w plikach xml do odrzucania ostrzeżeń.
ALE odrzucanie ostrzeżeń o strzępach za pomocą tej techniki jest w większości przypadków niewłaściwym sposobem postępowania.
Ostrzeżenie o strzępach należy zrozumieć i naprawić ... można je zignorować tylko wtedy, gdy masz pełne zrozumienie jego znaczenia i silny powód, aby je zignorować.
Oto przypadek użycia, w którym uzasadnione jest zignorowanie ostrzeżenia o kłaczkach:
- Tworzysz aplikację systemową (podpisaną kluczem producenta urządzenia)
- Twoja aplikacja musi zmienić datę urządzenia (lub inne działanie chronione)
Następnie możesz to zrobić w swoim manifeście: (tj. Prosząc o chronione pozwolenie i ignorując ostrzeżenie o strzępach, ponieważ wiesz, że w twoim przypadku pozwolenie zostanie udzielone)
<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"/>
Importowanie zasobów bez błędu „Przestarzałe”
Używając Android API 23 lub nowszego, bardzo często można zaobserwować taką sytuację:
Sytuacja ta jest spowodowana zmianami strukturalnymi interfejsu API Androida w zakresie pozyskiwania zasobów. Teraz funkcja:
public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException
należy użyć. Ale biblioteka android.support.v4 ma inne rozwiązanie.
Dodaj następującą zależność do pliku build.gradle:
com.android.support:support-v4:24.0.0
Następnie dostępne są wszystkie metody z biblioteki wsparcia:
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));
Ponadto można zastosować więcej metod z biblioteki wsparcia:
ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...
Skonfiguruj LintOptions ze stopniowaniem
Możesz skonfigurować lint, dodając sekcję lintOptions
w pliku 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
}
}
Można uruchomić strzępków dla konkretnego wariantu (patrz poniżej), np ./gradlew lintRelease
, czy dla wszystkich wariantów ( ./gradlew lint
), w którym to przypadku tworzy raport, który opisuje, jakie konkretne warianty dana sprawa dotyczy.
Sprawdź tutaj odniesienie DSL dla wszystkich dostępnych opcji .
Jak skonfigurować plik lint.xml
Możesz określić swoje preferencje sprawdzania Lint w pliku lint.xml
. Jeśli tworzysz ten plik ręcznie, umieść go w katalogu głównym swojego projektu na Androida. Jeśli konfigurujesz preferencje Lint w Android Studio, plik lint.xml jest automatycznie tworzony i dodawany do projektu Android.
Przykład:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
</lint>
Ustawiając wartość atrybutu ważności w znaczniku, można wyłączyć sprawdzanie kłaczków dla problemu lub zmienić poziom istotności dla problemu.
Poniższy przykład pokazuje zawartość pliku 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>
Konfigurowanie sprawdzania kłaczków w plikach źródłowych Java i XML
Możesz wyłączyć sprawdzanie Lint w plikach źródłowych Java i XML.
Konfigurowanie sprawdzania kłaczków w Javie
Aby wyłączyć sprawdzanie Lint specjalnie dla klasy lub metody Java w projekcie Android, dodaj adnotację @SuppressLint
do tego kodu Java.
Przykład:
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Aby wyłączyć sprawdzanie wszystkich problemów Lint:
@SuppressLint("all")
Konfigurowanie sprawdzania kłaczków w XML
Możesz użyć tools:ignore
atrybut, aby wyłączyć sprawdzanie kłaczków dla określonych sekcji plików XML .
Na przykład:
tools:ignore="NewApi,StringFormatInvalid"
Aby wyłączyć sprawdzanie wszystkich problemów Lint w elemencie XML, użyj
tools:ignore="all"
Oznacz tłumienie ostrzeżeń
Dobrą praktyką jest zaznaczanie ostrzeżeń w kodzie. Na przykład niektóre przestarzałe metody wymagają testowania lub starej wersji wsparcia. Ale sprawdzanie Lint oznaczy ten kod ostrzeżeniami. Aby uniknąć tego problemu, potrzebujesz adnotacji @SuppressWarnings.
Na przykład dodaj ignorowanie ostrzeżeń do przestarzałych metod. W adnotacji należy również umieścić opis ostrzeżeń:
@SuppressWarnings("deprecated");
public void setAnotherColor (int newColor) {
getApplicationContext().getResources().getColor(newColor)
}
Za pomocą tej adnotacji możesz zignorować wszystkie ostrzeżenia, w tym Lint, Android i inne. Korzystanie z funkcji Pomiń ostrzeżenia pomaga prawidłowo zrozumieć kod!