Android
Avvertenze sui pelucchi
Ricerca…
Osservazioni
Lo strumento Lint controlla i file di origine del progetto Android per potenziali bug e miglioramenti di ottimizzazione per correttezza, sicurezza, prestazioni, usabilità, accessibilità e internazionalizzazione. È possibile eseguire Lint dalla riga di comando o da Android Studio.
Documentazione ufficiale:
Utilizzo degli strumenti: ignora nei file xml
Gli tools:ignore
attributo tools:ignore
possono essere utilizzati nei file xml per eliminare gli avvertimenti sui pelucchi.
MA ignorare gli avvertimenti sui pelucchi con questa tecnica è la maggior parte delle volte il modo sbagliato di procedere.
Un avvertimento sui pelucchi deve essere compreso e corretto ... può essere ignorato se e solo se si ha una piena comprensione del suo significato e un motivo valido per ignorarlo.
Ecco un caso d'uso in cui è legittimo ignorare un avvertimento relativo ai pelucchi:
- Stai sviluppando un'applicazione di sistema (firmata con la chiave del produttore del dispositivo)
- La tua app deve modificare la data del dispositivo (o qualsiasi altra azione protetta)
Quindi puoi farlo nel tuo manifest: (ad esempio richiedendo l'autorizzazione protetta e ignorando l'avviso del filtro perché sai che nel tuo caso l'autorizzazione sarà concessa)
<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"/>
Importazione di risorse senza errore "Deprecated"
Utilizzando l'API di Android 23 o superiore, molto spesso tale situazione può essere vista:
Questa situazione è causata dal cambiamento strutturale dell'API di Android per quanto riguarda il recupero delle risorse. Ora la funzione:
public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException
dovrebbe essere usato. Ma la libreria android.support.v4 ha un'altra soluzione.
Aggiungi la seguente dipendenza al file build.gradle:
com.android.support:support-v4:24.0.0
Quindi sono disponibili tutti i metodi dalla libreria di supporto:
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));
Inoltre è possibile utilizzare più metodi dalla libreria di supporto:
ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...
Configura LintOptions con gradle
Puoi configurare lint aggiungendo una sezione lintOptions
nel file 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
}
}
È possibile eseguire lanci per una variante specifica (vedere sotto), ad es. / ./gradlew lintRelease
, o per tutte le varianti ( ./gradlew lint
), nel qual caso produce un report che descrive a quali varianti specifiche si applica un determinato problema.
Controlla qui il riferimento DSL per tutte le opzioni disponibili .
Come configurare il file lint.xml
È possibile specificare le preferenze di controllo Lint nel file lint.xml
. Se stai creando questo file manualmente, inseriscilo nella directory principale del tuo progetto Android. Se stai configurando le preferenze di Lint in Android Studio, il file lint.xml viene automaticamente creato e aggiunto al tuo progetto Android per te.
Esempio:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
</lint>
Impostando il valore dell'attributo di severità nel tag, è possibile disabilitare il controllo dei rifiuti per un problema o modificare il livello di gravità per un problema.
L'esempio seguente mostra il contenuto di un file 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>
Configurazione del controllo del lint nei file di origine Java e XML
È possibile disabilitare il controllo dei pelucchi dai file di origine Java e XML.
Configurazione del controllo dei pelucchi in Java
Per disabilitare il controllo di Lint in modo specifico per una classe o un metodo Java nel tuo progetto Android, aggiungi l' annotazione @SuppressLint
a quel codice Java.
Esempio:
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Per disabilitare il controllo di tutti i problemi Lint:
@SuppressLint("all")
Configurazione del controllo del lint in XML
È possibile utilizzare gli tools:ignore
attributo per disabilitare il controllo dei rifiuti per sezioni specifiche dei file XML .
Per esempio:
tools:ignore="NewApi,StringFormatInvalid"
Per sopprimere il controllo di tutti i problemi di Lint nell'elemento XML, utilizzare
tools:ignore="all"
Mark Sopprimere gli avvertimenti
È buona norma contrassegnare alcuni avvisi nel codice. Ad esempio, alcuni metodi deprecati sono necessari per il test o la vecchia versione di supporto. Ma il controllo dei lanci contrassegnerà quel codice con degli avvertimenti. Per evitare questo problema, è necessario utilizzare l'annotazione @SuppressWarnings.
Ad esempio, aggiungi ignorando gli avvisi ai metodi deprecati. È necessario inserire la descrizione degli avvertimenti nell'annotazione anche:
@SuppressWarnings("deprecated");
public void setAnotherColor (int newColor) {
getApplicationContext().getResources().getColor(newColor)
}
Usando questa annotazione puoi ignorare tutti gli avvisi, inclusi Lint, Android e altri. L'uso di Ometti avvisi aiuta a capire il codice correttamente!