oprócz zapewnienia, że aplikacja spełnia swoje wymagania funkcjonalne poprzez testy budowlane, ważne jest również, aby upewnić się, że kod nie ma problemów strukturalnych, uruchamiając kod throughtlint. Narzędzie lint pomaga znaleźć źle zorganizowany kod, który może mieć wpływ na niezawodność i wydajność aplikacji na Androida i utrudnić utrzymanie kodu.
na przykład, jeśli Twoje pliki zasobów XML zawierają nieużywane przestrzenie nazw, zajmuje to miejsce i wymaga koniecznego przetwarzania., Inne problemy strukturalne, takie jak użycie przestarzałych elementów lub wywołań API, które nie są obsługiwane przez docelowe wersje API, mogą prowadzić do nieprawidłowego działania kodu.Lint może pomóc ci oczyścić te problemy.
aby jeszcze bardziej poprawić wydajność lintingu, powinieneś również dodać adnotacje do kodu.
przegląd
Android Studio udostępnia narzędzie do skanowania kodu o nazwie lint, które może pomóc zidentyfikować i rozwiązać problemy z jakością strukturalną kodu bez konieczności uruchamiania aplikacji lub pisania przypadków testowych., Każdy problem wykryty przez narzędzie jest raportowany z Komunikatem opisowym i poziomem nasilenia, dzięki czemu można szybko ustalić priorytety krytycznych ulepszeń, które należy wprowadzić. Możesz również obniżyć poziom dotkliwości problemu, aby zgłaszać problemy, które nie są istotne dla Twojego projektu, lub podnieść poziom dotkliwości, aby wykryć konkretne problemy.
narzędzie lint sprawdza pliki źródłowe projektu Android pod kątem potencjalnych błędów i ulepszeń optymalizacyjnych pod kątem poprawności, bezpieczeństwa, wydajności, użyteczności, dostępności i internacjonalizacji., Podczas korzystania z Android Studio skonfigurowane inspekcje lint i IDE są uruchamiane zawsze, gdy tworzysz aplikację. Można jednak ręcznie uruchamiać inspekcje lub uruchamiać lint z wiersza poleceń.
uwaga: po skompilowaniu kodu w Android Studio uruchamiamy dodatkowe inspekcje kodu do przeglądu kodu.
Rysunek 1 pokazuje, w jaki sposób narzędzie lint przetwarza pliki źródłowe aplikacji.
Rysunek 1., Workflow skanowania kodu za pomocą narzędzia lint
pliki źródłowe aplikacji pliki źródłowe składają się z plików, które tworzą twój projekt Android, w tym pliki Java, Kotlin, andXML, ikony i pliki konfiguracyjne ProGuard. Pliklint.xml
plik konfiguracyjny, którego możesz użyć do określenia dowolnych kontroli lint, które chcesz załączyć i dostosowania poziomów nasilenia problemu. Narzędzie lint narzędzie do skanowania kodu statycznego, które można uruchomić w projekcie Android z wiersza poleceń lub inAndroid Studio (patrz ręczne uruchamianie inspekcji)., Linttool sprawdza problemy z kodem strukturalnym, które mogą mieć wpływ na jakość i wydajność aplikacji yourAndroid. Zaleca się, aby poprawić wszelkie błędy, które wykrywają lint przed opublikowaniem aplikacji. Wyniki kontroli lint wyniki kontroli lint można wyświetlić w konsoli lub w oknie wyników kontroli w Android Studio. Zobacz ręcznie uruchamiane inspekcje.,
Uruchom lint z wiersza poleceń
Jeśli używasz Android Studio lub Gradle, możesz użyć wrappera Gradle, aby wywołać zadanie lint
dla Twojego projektu, wprowadzając jedną z następujących komend z katalogu głównego twojego projektu:
- w systemie Windows:
gradlew lint
- na Linux lub Mac:
./gradlew lint
powinieneś zobaczyć wyjście podobne do następującego:
gdy narzędzie lint zakończy sprawdzanie, wyświetli ścieżki do wersji XML i HTML raportu lint., Następnie można przejść do raportu HTML i otworzyć go w przeglądarce, Jak pokazano na rysunku 2.
Rysunek 2. Przykładowy raport lint HTML
Jeśli twój projekt zawiera warianty kompilacji, a zamiast tego chcesz uruchomić zadanie lint
tylko dla określonego wariantu kompilacji, musisz wpisać nazwę wariantu wielką literą i przedrostek lint
.
gradlew lintDebug
aby dowiedzieć się więcej o uruchamianiu Zadań Gradle z wiersza poleceń, przeczytaj Build Your App z wiersza poleceń.,
Uruchom lint za pomocą samodzielnego narzędzia
Jeśli nie używasz Android Studio lub Gradle, możesz użyć samodzielnego narzędzia lint po zainstalowaniu Narzędzi Android SDK z menedżera SDK. Następnie możesz zlokalizować narzędzie lint w katalogu android_sdk/tools/
.
aby uruchomić lint z listą plików w katalogu projektu, użyj następującego polecenia:
lint <project directory>
na przykład, możesz wydać następujące polecenie, aby skanować pliki w katalogumyproject
I jego podkatalogach., ID sprawyMissingPrefix
każe lint skanować tylko w poszukiwaniu atrybutów XML, w których brakuje prefiksu przestrzeni nazw Androida.
lint --check MissingPrefix myproject
aby zobaczyć pełną listę flag i argumentów wiersza poleceń obsługiwanych przez narzędzie, użyj polecenia following:
lint --help
poniższy przykład pokazuje wyjście konsoli, gdy polecenie lint jest uruchamiane przeciwko projektowi o nazwie Earthquake.,
powyższe wyjście zawiera cztery ostrzeżenia i nie zawiera błędów: trzy Ostrzeżenia (ManifestOrder
, UsesMinSdkAttributes
I UnusedResources
) w pliku AndroidManifest.xml
oraz jedno ostrzeżenie (AndroidManifest.xml
)
Preferences.xml
pliku układu.
Skonfiguruj lint, aby wyłączał Ostrzeżenia
domyślnie podczas uruchamiania skanowania lint narzędzie sprawdza wszystkie problemy, które obsługuje lint. Możesz również ograniczyć problemy dla lint, aby sprawdzić i przypisać poziom dotkliwości dla tych problemów., Na przykład możesz wyłączyć sprawdzanie lint pod kątem konkretnych problemów, które nie są istotne dla Twojego projektu, a także skonfigurować lint, aby zgłaszał niekrytyczne problemy na niższym poziomie.
możesz skonfigurować sprawdzanie lint dla różnych poziomów:
- globalnie (cały projekt)
- moduł projektu
- moduł produkcji
- moduł testowy
- otwórz pliki
- hierarchia klas
- zakresy systemu kontroli wersji (VCS)
Skonfiguruj lint w Android Studio
wbudowane narzędzie lint sprawdza kod podczas korzystania zAndroid Studio., Ostrzeżenia i błędy można wyświetlać na dwa sposoby:
- jako wyskakujący tekst w edytorze kodu. Gdy lint znajdzie problem, zaznacza problematyczny kod na Żółto, a w przypadku poważniejszych problemów zaznacza kod na Czerwono.
- w oknie wyników inspekcji lint po kliknięciu Analizuj > Sprawdź kod.Zobacz ręcznie uruchamiane inspekcje.
Konfiguracja pliku lint
możesz określić preferencje sprawdzania lint w plikulint.xml
. Jeśli tworzysz ten plik ręcznie, umieść go w katalogu głównym swojego projektu Android.,
pliklint.xml
składa się z załączającego<lint>
znacznika nadrzędnego, który zawiera jeden lub więcej elementów potomnych<issue>
. Lint definiuje unikalną wartość atrybutuid
dla każdego<issue>
.
<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --></lint>
możesz zmienić poziom dotkliwości problemu lub wyłączyć sprawdzanie lint, ustawiając atrybut dotkliwości w znaczniku<issue>
.,
Wskazówka: Aby uzyskać pełną listę spraw obsługiwanych przez lint i odpowiadających im identyfikatorów spraw, uruchom polecenie lint --list
.
plik xml
poniższy przykład pokazuje zawartość plikulint.xml
.
Konfiguracja sprawdzania lint dla plików źródłowych Java, Kotlin i XML
możesz wyłączyć lint od sprawdzania plików źródłowych Java, Kotlin i XML.
Wskazówka: Możesz zarządzać funkcją sprawdzania lint dla plików źródłowych Java, Kotlin lub XML w oknie dialogowym Preferencje domyślne., Wybierz plik > inne ustawienia > ustawienia domyślne, a następnie w lewym okienku okna dialogowego Ustawienia domyślne wybierz Edytor > inspekcje.
Konfigurowanie sprawdzania lint w Javie lub Kotlin
aby wyłączyć sprawdzanie lint specjalnie dla klasy lub metody w projekcie Android,dodaj adnotację@SuppressLint
do tego kodu.
poniższy przykład pokazuje, jak można wyłączyć sprawdzanie lint dla problemuNewApi
w metodzieonCreate
., Narzędzie lint nadal sprawdza problem NewApi
w innych metodach tej klasy.,
poniższy przykład pokazuje, jak wyłączyć sprawdzanie lint dla problemu ParserError
w klasie FeedProvider
klasa:
aby wyłączyć sprawdzanie wszystkich problemów lint w pliku,użyj słowa kluczowego all
w następujący sposób:
iv
Kotlin
@SuppressLint("all")
Java
@SuppressLint("all")
konfigurowanie sprawdzania lint w XML
możesz użyć atrybutu tools:ignore
aby wyłączyć sprawdzanie lint dla określonych sekcji twoich plików XML., Umieść następującą wartość przestrzeni nazw w pliku lint.xml
, aby narzędzie lint rozpoznało atrybut:
namespace xmlns:tools="http://schemas.android.com/tools"
poniższy przykład pokazuje, jak można wyłączyć sprawdzanie lint dla problemuUnusedResources
w <LinearLayout>
element pliku xmllayout. Atrybutignore
jest dziedziczony przez elementy potomne parenttelement, w którym atrybut jest zadeklarowany. W tym przykładzie sprawdzenie lint jest również wyłączone dla elementu <TextView>
.,
aby wyłączyć więcej niż jeden problem, wypisz problemy do wyłączenia w oddzielonym przecinkami łańcuchu. Przykład:
tools:ignore="NewApi,StringFormatInvalid"
aby wyłączyć sprawdzanie wszystkich problemów lint w elemencie XML, użyj słowa kluczowego all
, jak to:
tools:ignore="all"
skonfiguruj opcje lint za pomocą Gradle
Wtyczka Android dla Gradle pozwala skonfigurować pewne opcje lint, takie jak które kontrole mają być uruchamiane lub ignorowane, używając lintOptions {}
block w pliku build.gradle
., Poniższy fragment kodu pokazuje niektóre z właściwości, które można skonfigurować:
Utwórz linię bazową ostrzeżeń
możesz zrobić migawkę bieżącego zestawu ostrzeżeń w projekcie, a następnie użyć migawki jako linii bazowej do przyszłych przeglądów, aby zgłaszać tylko nowe problemy. Migawka linii bazowych pozwala zacząć używać lint, aby zawieść kompilację bez konieczności cofania i rozwiązywania wszystkich istniejących problemów w pierwszej kolejności.
aby utworzyć migawkę linii bazowej, zmodyfikuj plik build.gradle
w następujący sposób.,
android { lintOptions { baseline file("lint-baseline.xml") }}
po pierwszym dodaniu tej linii, pliklint-baseline.xml
jest tworzony w celu ustalenia linii bazowej. Od tego momentu narzędzia odczytują plik tylko w celu określenia linii bazowej. Jeśli chcesz utworzyć nową linię bazową, ręcznie usuń plik i uruchom lint ponownie, aby go odtworzyć.
następnie uruchom lint z IDE (Analizuj> Sprawdź kod) lub z linii poleceń w następujący sposób. Wyjście wyświetla lokalizację pliku lint-baseline.xml
. Lokalizacja pliku konfiguracji może różnić się od pokazanej tutaj.,
$ ./gradlew lintDebug...Wrote XML report to file:///app/lint-baseline.xmlCreated baseline file /app/lint-baseline.xml
uruchamianielint
rejestruje wszystkie bieżące problemy w plikulint-baseline.xml
. Zestaw bieżących spraw nosi nazwę linii bazowej i możesz sprawdzić plik lint-baseline.xml
w wersji control, jeśli chcesz go udostępnić innym.
Dostosuj linię bazową
Jeśli chcesz dodać kilka typów spraw do linii bazowej, ale nie wszystkie z nich, możesz określić problemy do dodania, edytującbuild.gradle
, w następujący sposób.,
android { lintOptions { check 'NewApi', 'HandlerLeak' baseline file("lint-baseline.xml") }}
Po utworzeniu linii bazowej, jeśli dodasz nowe ostrzeżenia do bazy kodowej, lint wyświetla tylko nowo wprowadzone błędy.
Ostrzeżenie dotyczące linii bazowych
gdy linie bazowe są aktywne, otrzymasz ostrzeżenie informacyjne, które mówi, że jedno lub więcej problemów zostało odfiltrowanych, ponieważ były już wymienione w linii bazowej. Powodem tego jest to, aby pomóc ci pamiętać, że skonfigurowałeś linię bazową, ponieważ najlepiej byłoby, gdybyś chciał w pewnym momencie naprawić wszystkie problemy.,
to Ostrzeżenie informacyjne nie tylko informuje o dokładnej liczbie błędów i ostrzeżeń, które zostały usunięte, ale także śledzi problemy, które nie są już zgłaszane. Ta informacja informuje cię, jeśli masz rzeczywiście naprawione problemy, więc możesz opcjonalnie utworzyć linię bazową, aby zapobiec ponownemu wykryciu błędu.
Uwaga:linie bazowe są włączone podczas uruchamiania inspekcji w trybie wsadowym w IDE, ale są ignorowane w przypadku kontroli w edytorze, które są uruchamiane w tle podczas edycji pliku., Powodem jest to, że linie bazowe są przeznaczone do przypadku, gdy baza kodu ma ogromną liczbę istniejących ostrzeżeń,ale chcesz naprawić problemy lokalnie podczas dotykania kodu.
ręcznie uruchamiaj inspekcje
możesz ręcznie uruchamiać skonfigurowane inspekcje lint i innych IDE, wybierając opcję Analizuj> Sprawdź kod. Wyniki kontroli pojawiają się w oknie Wyniki kontroli.,
Ustaw zakres i profil inspekcji
Wybierz pliki, które chcesz przeanalizować (zakres inspekcji) i specyfikacje, które chcesz uruchomić (profil inspekcji), w następujący sposób:
- w widoku systemu Android Otwórz projekt i wybierz projekt, folder lub plik, który chcesz przeanalizować.
- z paska menu wybierz Analizuj > Sprawdź kod.
- w oknie dialogowym określ zakres inspekcji przejrzyj ustawienia.
Rysunek 3., Przejrzyj ustawienia zakresu inspekcji
kombinacja opcji wyświetlanych w oknie dialogowym określ zakres inspekcji różni się w zależności od tego, czy wybrano projekt, folder czy plik. Możesz zmienić to, co chcesz sprawdzić, wybierając jeden z pozostałych przycisków opcji. W oknie dialogowym określ zakres inspekcji można znaleźć opis wszystkich możliwych pól w oknie dialogowym określ zakres inspekcji.
- po wybraniu jednego projektu, pliku lub katalogu okno dialogowe Określ zakres inspekcji wyświetla ścieżkę do wybranego projektu, Pliku lub katalogu.,
- Po wybraniu więcej niż jednego projektu, pliku lub katalogu okno dialogowe Określ zakres inspekcji wyświetla zaznaczony przycisk radiowy dla wybranych plików.
- w profilu inspekcji zachowaj domyślny profil (domyślny projekt).
- kliknij OK, aby uruchomić inspekcję. Rysunek 4 pokazuje lint i inne wyniki kontroli IDE z kodu Inspect run:
Rysunek 4. Wybierz problem, aby zobaczyć jego rozdzielczość
- w widoku drzewa po lewej stronie panelu wyświetl wyniki inspekcji, rozwijając i wybierając kategorie błędów, typy i problemy.,
W prawym okienku wyświetlany jest raport z inspekcji dla wybranej kategorii błędu, typu lub sprawy oraz podana jest nazwa i lokalizacja błędu. W stosownych przypadkach raport z inspekcji zawiera inne informacje, takie jak streszczenie problemu, aby pomóc w rozwiązaniu problemu.
- w widoku drzewa panelu po lewej stronie kliknij prawym przyciskiem myszy kategorię, typ lub sprawę, aby wyświetlić menu kontekstowe.
w zależności od kontekstu możesz wykonać wszystkie lub niektóre z następujących czynności: przejdź do źródła, wyklucz i dołącz wybrane elementy, eliminuj problemy, Edytuj Ustawienia, Zarządzaj alertami inspekcji i ponownie uruchom inspekcję.,
opis przycisków paska narzędzi po lewej stronie, pozycji menu kontekstowego i pól raportu z inspekcji można znaleźć w oknie Narzędzia inspekcja.
Użyj niestandardowego zakresu
Możesz użyć jednego z niestandardowych zakresów dostępnych w Android Studio, w następujący sposób:
- w oknie dialogowym określ zakres inspekcji kliknij niestandardowy zakres.
- kliknij listę rozwijaną zakres Niestandardowy, aby wyświetlić opcje.
Rysunek 5. Wybierz własny zakres, którego chcesz użyć
- pliki projektu: wszystkie pliki w bieżącym projekcie.,
- pliki produkcyjne projektu: tylko pliki produkcyjne w bieżącym projekcie.
- pliki testowe projektu: tylko pliki testowe w bieżącym projekcie. Zobacz typy testów i lokalizację.
- otwórz pliki: tylko te pliki, które masz otwarte w bieżącym projekcie.
- moduł< Twój-moduł>: tylko pliki w odpowiednim folderze modułu w bieżącym projekcie.
- bieżący plik: tylko bieżący plik w bieżącym projekcie. Pojawia się po wybraniu pliku lub folderu.,
- hierarchia klas: po wybraniu tej I kliknięciu OK pojawi się okno dialogowe ze wszystkimi klasami w bieżącym projekcie. Użyj pola Szukaj według nazwy w oknie dialogowym, aby filtrować i wybrać klasy do sprawdzenia. Jeśli nie filtrujesz listy klas, inspekcja kodu sprawdza wszystkie klasy.
- kliknij OK.
Utwórz zakres Niestandardowy
Jeśli chcesz sprawdzić wybór plików i katalogów, które nie są objęte żadną z aktualnie dostępnych zakresów niestandardowych, możesz utworzyć zakres Niestandardowy.,
- w oknie dialogowym określ zakres inspekcji wybierz zakres Niestandardowy.
- kliknij trzy kropki po rozwijanej liście zakresu niestandardowego.
Rysunek 6. Okno dialogowe Określ zakres inspekcji
zostanie wyświetlone okno dialogowe zakres.
Rysunek 7. Utwórz własny zakres
- kliknij Dodaj aby zdefiniować nowy zakres.
- z rozwijanej listy Dodaj zakres wybierz opcję Local.
zarówno lokalne, jak i współdzielone zakresy są używane w projekcie dla funkcji Inspect Code., Wspólny zakres może być również używany z innymi funkcjami projektu, które mają pole zakresu. Na przykład, po kliknięciu Edytuj ustawienia , aby zmienić ustawienia wyszukiwania, wynikowe okno dialogowe zawiera pole zakresu, w którym można wybrać wspólny zakres.
Rysunek 8. Wybierz współdzielony zakres z okna dialogowego Znajdź zastosowania
- nadaj zakresowi nazwę i kliknij OK.
prawy panel okna dialogowego zakresy jest wypełniony opcjami umożliwiającymi zdefiniowanie zakresu niestandardowego.
- z listy rozwijanej wybierz projekt.,
pojawia się lista dostępnych projektów.
Uwaga: możesz utworzyć własny zakres dla projektów lub pakietów. Kroki są takie same.
- rozwiń foldery projektu, wybierz co chcesz dodać do zakresu niestandardowego i kliknij jeden z przycisków po prawej stronie.
Rysunek 9. Zdefiniuj własny zakres
- Include: Dołącz ten folder i jego pliki, ale nie dołączaj żadnego z jego podfolderów.
- Include Recursively: Include this folder and all of its files and subfolders and their files.,
- Exclude: wyklucza ten folder i jego pliki, ale nie wyklucza żadnego z jego podfolderów.
- Wyklucz rekurencyjnie: Wyklucz folder ths oraz wszystkie jego pliki i podfoldery oraz ich pliki.
Rysunek 10 pokazuje, że folder główny jest dołączony, a folder java jest dołączany rekurencyjnie. Niebieski oznacza częściowo włączone foldery, a zielony oznacza rekurencyjnie włączone foldery i pliki.
Rysunek 10., Przykładowy wzorzec dla zakresu niestandardowego
- jeśli wybierzesz folder java i klikniesz Wyklucz rekurencyjnie, zielone podświetlenie zniknie na folderze java oraz wszystkich folderach i plikach znajdujących się pod nim.
- Jeśli zamiast tego wybierzesz podświetloną na Zielono główną aktywność.plik java i kliknij Wyklucz, MainActivity.java nie jest już podświetlona na zielono, ale wszystko inne w folderze java jest podświetlone na Zielono.
- kliknij OK. Zakres Niestandardowy pojawia się u dołu rozwijanej listy.,
Przeglądaj i edytuj profile inspekcji
Android Studio zawiera wybór profili inspekcji lint i innych, które są aktualizowane za pomocą aktualizacjiAndroid. Możesz używać tych profili tak jak jest lub edytować ich nazwy,opisy, stopnie i zakresy. Można również aktywować i dezaktywować całe grupy profili lub poszczególne profile w ramach grupy.
aby uzyskać dostęp do okna dialogowego inspekcji:
- wybierz opcję Analizuj > Sprawdź kod.
- w oknie dialogowym określ zakres w sekcji Profil inspekcji kliknij Więcej.,
pojawi się okno dialogowe inspekcje z listą obsługiwanych inspekcji i ich opisami.
Rysunek 11. Obsługiwane inspekcje i ich opisy
- Wybierz listę rozwijaną profil, aby przełączać się między inspekcjami domyślnymi (Android Studio) i domyślnymi (aktywny projekt). Aby uzyskać więcej informacji, zobacz tę stronę dialogową IntelliJSpecify Inspection Scope.
- w oknie dialogowym inspekcje w lewym okienku wybierz kategorię profilu najwyższego poziomu lub rozwiń grupę i wybierz określony profil., Po wybraniu kategorii profilu można edytować wszystkie inspekcje w tej kategorii jako pojedynczą inspekcję.
- Wybierz listę rozwijaną Zarządzaj, aby kopiować, zmieniać nazwy, dodawać opisy do inspekcji, eksportować i importować.
- Po zakończeniu kliknij OK.
Dodaj komentarz