Migliora il tuo codice con lint checks

postato in: Articles | 0

Oltre a garantire che la tua app soddisfi i suoi requisiti funzionali costruendo test, è importante che tu assicuri anche che il tuo codice non abbia problemi strutturali eseguendo il codice attraverso lint. Lo strumento lint aiuta a trovare codice mal strutturato che può avere un impatto thereliability e l’efficienza delle applicazioni Android e rendere il codice più difficile da mantenere.

Ad esempio, se i file di risorse XML contengono spazi dei nomi inutilizzati, ciò occupa spazio e comporta un’elaborazione non necessaria., Altri problemi strutturali, come l’uso di elementi deprecati o chiamate API che non sono supportate dalle versioni dell’API di destinazione, potrebbero causare il mancato corretto funzionamento del codice.Lint può aiutare a ripulire questi problemi.

Per migliorare ulteriormente le prestazioni di linting, dovresti ancheaggiungere annotazioni al tuo codice.

Panoramica

Android Studio fornisce uno strumento di scansione del codice chiamato lintthat può aiutare a identificare e correggere i problemi con la qualità strutturale del vostro codewithout vostro dover eseguire l’applicazione o scrivere casi di test., Ogni problema rilevato dallo strumento è segnalato con un messaggio di descrizione e un livello di gravità, in modo da poter dare rapidamente la priorità ai miglioramenti critici che devono essere apportati. Inoltre, è possibile ridurre il livello di gravità di un problema per segnalare problemi non rilevanti per il progetto o aumentare il livello di gravità per evidenziare problemi specifici.

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., Quando si utilizza Android Studio, le ispezioni lint e IDE configurate vengono eseguite ogni volta che si crea l’app. Tuttavia, è possibile eseguire manualmente ispezioni o eseguire lint dalla riga di comando.

Nota: quando il tuo codice è compilato in Android Studio, le ispezioni del codice additionalIntelliJ eseguono la revisione del codice tostreamline.

Figura 1 mostra come lo strumento lint elabora i file di origine dell’applicazione.

Figura 1., Flusso di lavoro di scansione del codice con lo strumento lint

File di origine dell’applicazione I file di origine sono costituiti da file che compongono il progetto Android, inclusi file Java, Kotlin, andXML, icone e file di configurazione ProGuard. Il filelint.xmlUn file di configurazione che è possibile utilizzare per specificare eventuali controlli lint che si desidera escludere e personalizzare i livelli di gravità del problema. Lo strumento lint Uno strumento di scansione del codice statico che è possibile eseguire sul progetto Android sia dalla riga di comando o inAndroid Studio (vedere Eseguire manualmente le ispezioni)., Linttool verifica la presenza di problemi di codice strutturale che potrebbero influire sulla qualità e sulle prestazioni dell’applicazione yourAndroid. Si consiglia vivamente di correggere eventuali errori rilevati da lint prima di pubblicare l’applicazione. Risultati del controllo lint È possibile visualizzare i risultati di lint nella console o nella finestra Risultati ispezione in Android Studio. Vedere Eseguire manualmente le ispezioni.,

Esegui lanugine dalla riga di comando

Se si utilizza Android Studio o Gradle, è possibile utilizzare il Gradle wrapper per richiamare il lint attività per il progetto inserendo uno dei seguenti comandi da root directory del progetto:

  • Su Windows:
    gradlew lint
  • Su Linux o Mac:
    ./gradlew lint

Si dovrebbe vedere un output simile al seguente:

Quando il panno strumento viene completato il suo controllo, si offre percorsi di XML e HTML versioni del relativo report., È quindi possibile passare al report HTML e aprirlo nel browser, come mostrato in figura 2.

Figura 2. Esempio di report HTML lint

Se il progetto include varianti di build e si desidera eseguire l’attivitàlintsolo per una variante di build specifica, è necessario capitalizzare il nome della variante e prefiggerlo conlint.

gradlew lintDebug

Per ulteriori informazioni sull’esecuzione di attività Gradle dalla riga di comando, leggi Crea la tua app dalla riga di comando.,

Esegui lint utilizzando lo strumento standalone

Se non stai utilizzando Android Studio o Gradle, puoi utilizzare lo strumento lint standalone dopo aver installato gli strumenti SDK di Android da SDK Manager. È quindi possibile individuare lo strumento lint nella directoryandroid_sdk/tools/.

Per eseguire lint su un elenco di file in una directory di progetto, utilizzare il seguente comando:

lint <project directory>

Ad esempio, è possibile eseguire il seguente comando per eseguire la scansione dei file nella directorymyproject e le relative sottodirectory., L’ID problemaMissingPrefixindica a lint di eseguire la scansione solo per gli attributi XML che mancano del prefisso dello spazio dei nomi Android.

lint --check MissingPrefix myproject 

Per visualizzare l’elenco completo dei flag e degli argomenti della riga di comando supportati dallo strumento, utilizzare il seguente comando:

lint --help

Il seguente esempio mostra l’output della console quando il comando lint viene eseguito contro un progetto chiamato Earthquake.,

L’uscita elenchi di cui sopra quattro avvisi e senza errori: tre avvisi (ManifestOrder UsesMinSdkAttributes e UnusedResources) nel progetto AndroidManifest.xml file, e un avvertimento (IconMissingDensityFolder) nel Preferences.xml file di layout.

Configura lint per eliminare gli avvisi

Per impostazione predefinita quando si esegue una scansione lint, lo strumento controlla tutti i problemi supportati da lint. È inoltre possibile limitare i problemi per lint per controllare e assegnare il livello di gravità per tali problemi., Ad esempio, è possibile sopprimere il controllo lint per problemi specifici che non sono rilevanti per il progetto e, è possibile configurare lint per segnalare problemi non critici a un livello lowerseverity.

È possibile configurare panno di controllo per i diversi livelli di:

  • in tutto il mondo (intero progetto)
  • modulo di Progetto
  • modulo di Produzione
  • Prova di modulo
  • Apri file
  • gerarchia di Classe
  • Sistema di Controllo di Versione (VCS) gli ambiti di

Configurare panno in Android Studio

Il built-in panno strumento controlla il codice mentre si sta usingAndroid Studio., È possibile visualizzare avvisi ed errori in due modi:

  • Come testo pop-up nell’editor di codice. Quando lint trova un problema, evidenzia il codice problematico in giallo, o per problemi più gravi, sottolinea il codice in rosso.
  • Nella finestra Risultati ispezione lint dopo aver fatto clic su Analizza > Ispeziona codice.Vedere Eseguire manualmente le ispezioni.

Configura il file lint

Puoi specificare le tue preferenze di controllo lint nel filelint.xml. Se stai creando questo file manualmente, posizionalo nella directory principale del tuo progetto Android.,

Il filelint.xml consiste in un tag genitore che racchiude<lint> che contiene uno o più elementi figli<issue>. Lint definisce un valore di attributo id univoco per ogni <issue>.

<?xml version="1.0" encoding="UTF-8"?> <lint> <!-- list of issues to configure --></lint>

È possibile modificare il livello di gravità di un problema o disabilitare il controllo lint per il problema impostando l’attributo severity nel tag<issue>.,

Suggerimento: per un elenco completo dei problemi supportati da lint e dei relativi ID problema corrispondenti, eseguire il comandolint --list.

Campione di lanugine.file xml

Il seguente esempio mostra il contenuto di un filelint.xml.

Configura il controllo lint per i file sorgente Java, Kotlin e XML

È possibile disabilitare lint dal controllo dei file sorgente Java, Kotlin e XML.

Suggerimento: è possibile gestire la funzione di controllo lint per i file di origine Java, Kotlin o XML nella finestra di dialogo Preferenze predefinite., Selezionare File >Altre impostazioni> Impostazioni predefinite, quindi nel riquadro sinistro della finestra di dialogo Preferenze predefinite, selezionare Editor > Ispezioni.

Configurazione del controllo lint in Java o Kotlin

Per disabilitare il controllo lint specifico per una classe o un metodo nel tuo progetto Android,aggiungi l’annotazione@SuppressLint a quel codice.

Il seguente esempio mostra come è possibile disattivare il controllo lint per il problema NewApinel metodo onCreate., Lo strumento lint continua a controllare il problemaNewApi in altri metodi di questa classe.,

L’esempio seguente mostra come disattivare panno di controllo per l’ ParserErrorproblema FeedProvider classe:

Per sopprimere il controllo per tutti i pelucchi problemi nel file, utilizzare il tag all parola chiave,ad esempio:

Kotlin

@SuppressLint("all")

Java

@SuppressLint("all")

Configurazione panno di controllo in XML

È possibile utilizzare il tag tools:ignore attributo per disattivare panno di controllo per le sezioni specifiche dei file XML., Inserire il seguente valore namespace lint.xml file in modo che il panno strumento riconosce l’attributo:

namespace xmlns:tools="http://schemas.android.com/tools"

L’esempio seguente mostra come è possibile disattivare panno di controllo per l’UnusedResources problema <LinearLayout> elemento di un XMLlayout file. L’attributoignore viene ereditato dagli elementi figli del parentelement in cui viene dichiarato l’attributo. In questo esempio, il controllo lint è disabilitato anche per l’elemento child <TextView>.,

Per disabilitare più di un problema, elencare i problemi da disabilitare in una stringa separata da virgole. Ad esempio:

tools:ignore="NewApi,StringFormatInvalid"

Per sopprimere il controllo per tutti i pelucchi problemi di elemento XML, utilizzare il tag all parola chiave,ad esempio:

tools:ignore="all"

Configurare panno opzioni con Gradle

Android plugin per Gradle consente di configurare alcuni pelucchi opzioni, quali controlli da eseguire o ignorare, utilizzando il lintOptions {} blocco nel vostro livello di modulo build.gradle file., Il seguente frammento di codice mostra alcune delle proprietà che è possibile configurare:

Crea linea di base degli avvisi

È possibile scattare un’istantanea dell’attuale set di avvisi del progetto e quindi utilizzare l’istantanea come linea di base per le future esecuzioni di ispezione in modo che vengano segnalati solo nuovi problemi. L’istantanea di base consente di iniziare a utilizzare lint per fallire la compilazione senza dover tornare indietro e risolvere prima tutti i problemi esistenti.

Per creare un’istantanea di base, modificare il file build.gradle del progetto come segue.,

android { lintOptions { baseline file("lint-baseline.xml") }}

Quando aggiungi per la prima volta questa riga, il filelint-baseline.xml viene creato per stabilire la tua linea di base. Da quel momento in poi, gli strumenti leggono solo il file per determinare la linea di base. Se si desidera creare una nuova linea di base, eliminare manualmente il file ed eseguire nuovamente lint per ricrearlo.

Quindi, esegui lint dall’IDE (Analizza> Ispeziona codice) o dalla riga di comando come segue. L’output stampa la posizione del filelint-baseline.xml. Il percorso del file per la configurazione potrebbe essere diverso da quello mostrato qui.,

$ ./gradlew lintDebug...Wrote XML report to file:///app/lint-baseline.xmlCreated baseline file /app/lint-baseline.xml

L’esecuzione di lintregistra tutti i problemi attuali nel file lint-baseline.xml. Il set di problemi attuali è chiamato baseline e puoi controllare il file lint-baseline.xml nel controllo della versione se vuoi condividerlo con altri.

Personalizza la linea di base

Se vuoi aggiungere alcuni tipi di problemi alla linea di base, ma non tutti, puoi specificare i problemi da aggiungere modificandobuild.gradle del tuo progetto, come segue.,

android { lintOptions { check 'NewApi', 'HandlerLeak' baseline file("lint-baseline.xml") }}

Dopo aver creato la linea di base, se si aggiungono nuovi avvisi alla base di codice, lint elenca solo i bug appena introdotti.

Avviso di base

Quando le linee di base sono attive, viene visualizzato un avviso informativo che indica che uno o più problemi sono stati filtrati perché erano già elencati nella linea di base. La ragione per thiswarning è aiutarla a ricordare che Lei ha configurato una linea di base, perché idealmente, youwould vuole riparare tutti i problemi ad un certo punto.,

Questo avviso informativo non solo indica il numero esatto di errori e avvisi che sono stati filtrati, ma tiene anche traccia dei problemi che non vengono più segnalati. Questa informazione consente di sapere se hai effettivamente risolto problemi, quindi puoi facoltativamente ricreare la linea di base per evitare che l’errore ritorni inosservato.

Nota:le linee di base sono abilitate quando si eseguono ispezioni in modalità batch nell’IDE, ma vengono ignorate per i controlli in-editor eseguiti in background quando si modifica un file., Il motivo è che le linee di base sono destinate al caso in cui una base di codice ha un numero enorme di avvisi esistenti,ma si desidera risolvere i problemi localmente mentre si tocca il codice.

Eseguire manualmente le ispezioni

È possibile eseguire manualmente le ispezioni lint configurate e altre ispezioni IDE selezionando Analizza> Ispeziona codice. I risultati dell’ispezione vengono visualizzati nella finestra Risultati ispezione.,

Impostare l’ambito di ispezione e il profilo

Selezionare i file che si desidera analizzare (ambito di ispezione) e leispezioni che si desidera eseguire (profilo di ispezione), come segue:

  1. Nella vista Android, aprire il progetto e selezionare il progetto, una cartella o un file che si desidera analizzare.
  2. Dalla barra dei menu, selezionare Analizza> Ispeziona codice.
  3. Nella finestra di dialogo Specifica ambito di ispezione, rivedere le impostazioni.

    Figura 3., Rivedere le impostazioni dell’ambito di ispezione

    La combinazione di opzioni visualizzate nella finestra di dialogo Specifica ambito di ispezione varia a seconda che sia stato selezionato un progetto, una cartella o un file. È possibile modificare cosa ispezionare selezionando uno degli altri pulsanti di opzione. Seespecifica finestra ambito ispezione per una descrizione di tutti i campi possibili nella finestra di dialogo Specifica ambito ispezione.

    • Quando si seleziona un progetto, un file o una directory, la finestra di dialogo Specifica ambito di ispezione visualizza il percorso del progetto, del file o della directory selezionata.,
    • Quando si selezionano più di un progetto, file o directory, la finestra di dialogo Specifica ambito di ispezione visualizza un pulsante di opzione selezionato per i file selezionati.
  4. Sotto il profilo di ispezione, mantenere il profilo predefinito (Predefinito del progetto).
  5. Fare clic su OK per eseguire l’ispezione. Figura 4 mostra lint e altri risultati di ispezione IDE dall’esecuzione del codice Inspect:

    Figura 4. Selezionare un problema per visualizzarne la risoluzione

  6. Nella vista ad albero del riquadro di sinistra, visualizzare i risultati dell’ispezione espandendo e selezionando categorie, tipi e problemi di errore.,

    Il riquadro di destra visualizza il rapporto di ispezione per la categoria, il tipo o il problema di errore selezionato e fornisce il nome e la posizione dell’errore. Se del caso, il rapporto di ispezione visualizza altre informazioni, ad esempio una sinossi del problema, per aiutarti a correggere il problema.

  7. Nella vista ad albero del riquadro di sinistra, fare clic con il pulsante destro del mouse su una categoria, tipo o problema per visualizzare il menu contestuale.

    A seconda del contesto, è possibile eseguire tutte o alcune delle seguenti operazioni: passare all’origine, escludere e includere elementi selezionati, eliminare i problemi, modificare le impostazioni, gestire gli avvisi di ispezione e rieseguire un’ispezione.,

Per le descrizioni dei pulsanti della barra degli strumenti sul lato sinistro, delle voci del menu contestuale e dei campi del rapporto di ispezione, vedere Finestra Strumento di ispezione.

Utilizzare un ambito personalizzato

È possibile utilizzare uno degli ambiti personalizzati forniti in Android Studio, come segue:

  1. Nella finestra di dialogo Specifica ambito di ispezione, fare clic su Ambito personalizzato.
  2. Fare clic sull’elenco a discesa Ambito personalizzato per visualizzare le opzioni.

    Figura 5. Selezionare l’ambito personalizzato che si desidera utilizzare

    • File di progetto: tutti i file nel progetto corrente.,
    • File di produzione del progetto: solo i file di produzione nel progetto corrente.
    • File di test di progetto: solo i file di test nel progetto corrente. Vedere Tipi di test e posizione.
    • Apri file: solo i file che hai aperto nel progetto corrente.
    • Module<your-module>: solo i file nella cartella del modulo corrispondente nel progetto corrente.
    • File corrente: solo il file corrente nel progetto corrente. Appare quando hai selezionato un file o una cartella.,
    • Gerarchia di classi: quando si seleziona questa e si fa clic su OK, viene visualizzata una finestra di dialogo con tutte le classi del progetto corrente. Utilizzare il campo Cerca per nome nella finestra di dialogo per filtrare e selezionare le classi da ispezionare. Se non si filtra l’elenco delle classi, l’ispezione del codice ispeziona tutte le classi.
  3. Fare clic su OK.

Creare un ambito personalizzato

Quando si desidera ispezionare una selezione di file e directory che non è coperta da nessuno degli ambiti personalizzati attualmente disponibili, è possibile creare un ambito personalizzato.,

  1. Nella finestra di dialogo Specifica ambito di ispezione, selezionare Ambito personalizzato.
  2. Fare clic sui tre punti dopo l’elenco a discesa Ambito personalizzato.

    Figura 6. Specifica finestra di dialogo Ambito di ispezione

    Viene visualizzata la finestra di dialogo Ambiti.

    Figura 7. Creare un ambito personalizzato

  3. Fare clic su Aggiungi per definire un nuovo ambito.
  4. Nell’elenco a discesa Aggiungi ambito risultante, selezionare Locale.

    Entrambi gli ambiti locali e condivisi vengono utilizzati all’interno del progetto per la funzione Inspect Code., Un ambito condiviso può essere utilizzato anche con altre funzionalità del progetto che dispongono di un campo ambito. Ad esempio, quando si fa clic su Modifica impostazioni per modificare le impostazioni per Trova usi, la finestra di dialogo risultante ha un campo Ambito in cui è possibile selezionare un ambito condiviso.

    Figura 8. Selezionare un ambito condiviso dalla finestra di dialogo Trova usi

  5. Assegnare un nome all’ambito e fare clic su OK.

    Il riquadro destro della finestra di dialogo Ambiti popola le opzioni che consentono di definire l’ambito personalizzato.

  6. Dall’elenco a discesa, selezionare Progetto.,

    Viene visualizzato un elenco di progetti disponibili.

    Nota: È possibile creare l’ambito personalizzato per progetti o pacchetti. I passaggi sono gli stessi in entrambi i casi.

  7. Espandere le cartelle del progetto, selezionare ciò che si desidera aggiungere all’ambito personalizzato e fare clic su uno dei pulsanti sulla destra.

    Figura 9. Definire un ambito personalizzato

    • Include: includere questa cartella e i suoi file, ma non includere nessuna delle sue sottocartelle.
    • Includi ricorsivamente: includi questa cartella e tutti i suoi file e sottocartelle e i relativi file.,
    • Exclude: escludere questa cartella e i suoi file, ma non escludere nessuna delle sue sottocartelle.
    • Exclude Ricorsively: Esclude la cartella ths e tutti i suoi file e sottocartelle e i relativi file.

    La figura 10 mostra che la cartella principale è inclusa e che la cartella java è inclusa ricorsivamente. Il blu indica le cartelle parzialmente incluse e il verde indica le cartelle e i file ricorsivamente inclusi.

    Figura 10., Modello di esempio per un ambito personalizzato

    • Se si seleziona la cartella java e si fa clic su Escludi ricorsivamente, l’evidenziazione verde scompare sulla cartella java e su tutte le cartelle e i file sottostanti.
    • Se invece si seleziona la MainActivity evidenziata in verde.file java e fare clic su Escludi, MainActivity.java non è più evidenziato in verde, ma tutto il resto sotto la cartella Java è evidenziato in verde.
  8. Fare clic su OK. L’ambito personalizzato viene visualizzato nella parte inferiore dell’elenco a discesa.,

Rivedere e modificare i profili di ispezione

Android Studio viene fornito con una selezione di lint e altri profili di ispezione che vengono aggiornati aggiornamenti throughAndroid. È possibile utilizzare questi profili così come sono o modificare i loro nomi, descrizioni, gravità, andscopes. È inoltre possibile attivare e disattivare interi gruppi di profili o profili individuali all’interno di un gruppo.

Per accedere alla finestra di dialogo Ispezioni:

  1. Selezionare Analizza > Ispeziona codice.
  2. Nella finestra di dialogo Specifica ambito in Profilo ispezione, fare clic su Altro.,

    Viene visualizzata la finestra di dialogo Ispezioni con un elenco delle ispezioni supportate e delle relative descrizioni.

    Figura 11. Ispezioni supportate e relative descrizioni

  3. Selezionare l’elenco a discesa Profilo per alternare le ispezioni predefinite (Android Studio) e quelle predefinite del progetto (il progetto attivo). Per ulteriori informazioni, vedere questa pagina di dialogo IntelliJSpecify Inspection Scope.
  4. Nella finestra di dialogo Ispezioni nel riquadro di sinistra, selezionare una categoria di profilo di livello superiore o espandere un gruppo e selezionare un profilo specifico., Quando si seleziona una categoria di profilo, è possibile modificare tutte le ispezioni in tale categoria come un’unica ispezione.
  5. Selezionare l’elenco a discesa Gestisci per copiare, rinominare, aggiungere descrizioni, esportare e importare ispezioni.
  6. Quando hai finito, fai clic su OK.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *