Na pewno zależy Wam na jakości i czystości kodu w Waszej aplikacji. Statyczne narzędzie do analizy kodu jakim jest Lint, pomoże usprawniać pisany kod. Służy ono do sprawdzania plików źródłowych projektu, pod kątem niewykorzystanych zasobów, problemów z grafiką, wydajnością, layoutami czy też brakujących tłumaczeń.
Aby uruchomić statyczną analizę kodu najprościej użyć wbudowanego terminala:
Wpisujemy komendę:
gradle lint
i klikamy enter.
Po kilku chwilach analiza się zakończy. W moim przypadku z błędem:
> Task :app:lint
Ran lint on variant debug: 4 issues found
Ran lint on variant release: 4 issues found
Wrote HTML report to file:///C:/androidcompl/Tutorial/app/build/reports/lint-results.html
Wrote XML report to file:///C:/androidcompl/Tutorial/app/build/reports/lint-results.xml
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:lint'.
> Lint found errors in the project; aborting build.
Fix the issues identified by lint, or add the following to your build script to proceed with errors:
...
android {
lintOptions {
abortOnError false
}
}
...
Errors found:
C:\androidcompl\Tutorial\app\src\main\res\layout\activity_main.xml:8: Error: This view is not constrained. It only has designtime positions, so it will jump to (0,0) at runtime unless you add the constraints [MissingConstraints]
<TextView
^
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 10s
32 actionable tasks: 1 executed, 31 up-to-date
Log nie zachęca do analizy co poszło nie tak. Na całe szczęście Lint generuje też raport w html, który jest bardziej czytelny dla człowieka 🙂 Lokalizacja raportu znajduje się na początku logu:
Wrote HTML report to file:///C:/androidcompl/Tutorial/app/build/reports/lint-results.html
Teraz wystarczy skopiować ten adres (kopiujemy i wklejamy wszystko, począwszy od "file///") i wkleić w adres url w ulubionej przeglądarce:
Widoczny jest tutaj jeden error i 3 warningi. Zajmiemy się teraz rozwiązaniem błędu. Jego opis mówi o tym, że element TextView nie ma ustawionej prawidłowej pozycji. W czasie działania programu zostanie przeniesiony do pozycji (0,0). Czyli do lewego górnego rogu ekranu. Sprawdźmy to uruchamiając program na emulatorze:
I rzeczywiście. Na podglądzie napis jest prawie na środku ekranu, a na emulatorze został przeniesiony w lewy górny róg.
Możemy to szybko naprawić, klikając w każdą z 4 kropek i przeciągając linię do boku ekranu:
W XML zapis będzie wyglądał następująco.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="android.com.pl"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
W tej chwili uruchamiając ponownie analizę statyczną kodu na końcu zobaczymy:
Nasza aplikacja nie ma już "krytycznych" błędów.