Verbeter uw code met lint controles

geplaatst in: Articles | 0

naast ervoor te zorgen dat uw app voldoet aan de functionele eisen door het bouwen van tests, is het belangrijk dat u ook ervoor zorgen dat uw code heeft geen structurele problemen door het uitvoeren van de code doorlint. De lint tool helpt bij het vinden van slecht gestructureerde code die de betrouwbaarheid en efficiëntie van uw Android-apps kan beà nvloeden en uw code moeilijker te onderhouden.

bijvoorbeeld, als uw XML-resourcebestanden ongebruikte naamruimten bevatten, neemt dit ruimte in beslag en wordt er onnodig verwerkt., Andere structurele problemen, zoals het gebruik van verouderde elementen of API-aanroependie niet worden ondersteund door de doel-API-versies, kunnen ertoe leiden dat de code niet correct wordt uitgevoerd.Lint kan u helpen opruimen van deze problemen.

om de lintprestaties verder te verbeteren, moet u ook annotaties aan uw code toevoegen.

overzicht

Android Studio biedt een code scanning tool genaamd lintdat u kan helpen bij het identificeren en corrigeren van problemen met de structurele kwaliteit van uw codezonder dat u de app moet uitvoeren of testcases moet schrijven., Elk probleem dat door de tool wordt gedetecteerd, wordt gerapporteerd met een beschrijvingsbericht en een ernstniveau, zodat u snel prioriteit kunt geven aan de kritische verbeteringen die moeten worden aangebracht. U kunt ook het ernstniveau van een probleem verlagen om meer problemen te negeren die niet relevant zijn voor uw project, of het ernstniveau verhogen om specifieke problemen te verlichten.

De lint tool controleert uw Android project bronbestanden op mogelijke bugs en optimalisatie verbeteringen voor correctheid, veiligheid, prestaties, bruikbaarheid, toegankelijkheid en internationalisatie., Wanneer u Android Studio gebruikt, worden geconfigureerde pluis-en IDE-inspecties uitgevoerd wanneer u uw app bouwt. U kunt echter handmatig inspecties uitvoeren of pluis uitvoeren vanaf de opdrachtregel.

Opmerking: Wanneer uw code is gecompileerd in Android Studio, worden aanvullende IntelliJ code inspecties uitgevoerd om de code te controleren.

figuur 1 laat zien hoe het pluisgereedschap de bronbestanden van de toepassing verwerkt.

figuur 1., Code scanning workflow met de lint tool

applicatie bronbestanden de bronbestanden bestaan uit bestanden die deel uitmaken van uw Android-project, waaronder Java, Kotlin, andXML-bestanden, pictogrammen en ProGuard configuratiebestanden. Hetlint.xmlbestand een configuratiebestand dat u kunt gebruiken om pluiscontroles op te geven die u wilt uitsluiten en om de ernst van problemen aan te passen. De lint tool een statische code scanning tool die u kunt uitvoeren op uw Android project, hetzij vanaf de opdrachtregel of inAndroid Studio (zie handmatig uitvoeren inspecties)., De linttool controleert op structurele code problemen die de kwaliteit en prestaties van uw Android applicatie kunnen beïnvloeden. Het wordt sterk aanbevolen dat u eventuele fouten die lint detecteert corrigeert alvorens uw toepassing te publiceren. Resultaten van pluiscontrole u kunt de resultaten van pluis bekijken in de console of in het venster inspectieresultaten in Android Studio. Zie inspecties handmatig uitvoeren.,

Uitvoeren lint van de commandoregel

Als u gebruikmaakt van Android Studio of Gradle, kunt u gebruik maken van de Gradle wrapper beroep te doen op de lint taak voor uw project door het invoeren van een van de volgende commando ‘ s uit in de hoofdmap van je project:

  • in Windows:
    gradlew lint
  • Op Linux of Mac:
    ./gradlew lint

U ziet de output lijkt op het volgende:

Wanneer het lint tool klaar is met controles, het biedt paden naar de XML-en HTML-versies van de lint rapport., U kunt vervolgens naar het HTML-rapport navigeren en het openen in uw browser, zoals weergegeven in Figuur 2.

Figuur 2. Voorbeeld HTML lint rapport

als uw project build varianten bevat, en u in plaats daarvan de lint taak wilt uitvoeren voor alleen een specifieke build variant, moet u de naam van de variant hoofdletter maken en deze voorvoegsel met lint.

gradlew lintDebug

Lees uw App bouwen vanaf de opdrachtregel voor meer informatie over het uitvoeren van Gradle-taken vanaf de opdrachtregel.,

Run lint met behulp van de standalone tool

Als u Android Studio of Gradle niet gebruikt, kunt u de standalone lint tool gebruiken nadat u de Android SDK Tools hebt geïnstalleerd vanuit de SDK Manager. U kunt dan het lint Gereedschap vinden in de android_sdk/tools/ map.

om lint uit te voeren tegen een lijst met bestanden in een projectmap, gebruik je het volgende commando:

lint <project directory>

U kunt bijvoorbeeld het volgende commando uitvoeren om de bestanden onder demyproject map en de submappen te scannen., De issue ID MissingPrefixvertelt lint om alleen te scannen op XML-attributen die het Android-naamruimtevoorvoegsel missen.

lint --check MissingPrefix myproject 

om de volledige lijst van vlaggen en opdrachtregelargumenten te zien die door het gereedschap worden ondersteund, gebruik je het volgende commando:

lint --help

het volgende voorbeeld toont de console-uitvoer wanneer het lint-commando wordt uitgevoerd tegen een project genaamd Earthquake.,

De uitvoer hierboven bevat vier waarschuwingen en geen fouten: drie waarschuwingen (ManifestOrder, UsesMinSdkAttributes, en UnusedResources) in het project AndroidManifest.xml bestand, en één waarschuwing (IconMissingDensityFolder) in het Preferences.xml opmaakbestand.

configureer lint om waarschuwingen

standaard te onderdrukken wanneer u een lint scan uitvoert, controleert het gereedschap op alle problemen die lint ondersteunt. U kunt ook de problemen voor lint beperken om het ernstniveau voor deze problemen te controleren en toe te wijzen., U kunt bijvoorbeeld de controle van pluisjes onderdrukken voor specifieke problemen die niet relevant zijn voor uw project en u kunt pluisjes configureren om niet-kritieke problemen op een lager niveau te rapporteren.

u kunt pluiscontrole configureren voor verschillende niveaus:

  • globaal (gehele project)
  • projectmodule
  • productiemodule
  • testmodule
  • Open bestanden
  • Klassenhiërarchie
  • Version Control System (VCS) scopes

lint configureren in Android Studio

in lint tool controleert uw code tijdens het gebruik vanAndroid Studio., U kunt waarschuwingen en fouten op twee manieren bekijken:

  • als pop-up tekst in de Code-Editor. Wanneer pluis een probleem vindt, markeert het de problematische code in het geel, of voor meer ernstige problemen, onderstreept het de code in het rood.
  • in het venster resultaten van de pluisinspectie nadat u op Analyseren > inspecteren Code klikt.Zie inspecties handmatig uitvoeren.

configureer het pluisbestand

u kunt uw voorkeuren voor pluiscontrole opgeven in het lint.xml bestand. Als je dit bestand handmatig maakt, plaats het in de hoofdmap van je Android-project.,

hetlint.xml bestand bestaat uit een insluitend<lint> ouderlabel dat een of meer kinderen bevat<issue> elementen. Lint definieert een uniekeid attribuutwaarde voor elke<issue>.

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

u kunt het ernstniveau van een probleem wijzigen of pluiscontrole voor het probleem uitschakelen door het kenmerk ernst in te stellen in de <issue> tag.,

Tip: voer het commandolint --list uit voor een volledige lijst van door pluis ondersteunde problemen en hun bijbehorende issue-ID ‘ s.

monsterpluis.xml-bestand

het volgende voorbeeld toont de inhoud van een lint.xml – bestand.

lint controleren voor Java -, Kotlin-en XML-bronbestanden configureren

u kunt lint uitschakelen bij het controleren van uw Java -, Kotlin-en XML-bronbestanden.

Tip: U kunt de pluiscontrolefunctie voor uw Java -, Kotlin-of XML-bronbestanden beheren in het dialoogvenster standaardvoorkeuren., Selecteer Bestand > overige instellingen > standaardinstellingen, en selecteer vervolgens in het linkerdeelvenster van het dialoogvenster standaardvoorkeuren Editor > inspecties.

configureren van lint controle in Java of Kotlin

om lint controle uit te schakelen specifiek voor een klasse of methode in uw Android project,voeg de @SuppressLint annotatie toe aan die code.

het volgende voorbeeld laat zien hoe u pluiscontrole kunt uitschakelen voor hetNewApiprobleem in deonCreate methode., Het lint Gereedschap gaat verder met het controleren op hetNewApi probleem in andere methoden van deze klasse.,

in Het volgende voorbeeld toont het uitschakelen van lint controleren voor de ParserErrorprobleem in de FeedProvider klasse:

Voor het onderdrukken van de controle voor alle lint problemen in het bestand, gebruik je de all zoekwoord,zoals deze:

Kotlin

@SuppressLint("all")

Java

@SuppressLint("all")

het Configureren van lint controleren in XML

U kunt gebruik maken van de tools:ignore – kenmerk voor het uitschakelen van lint controleren voor de specifieke secties van uw XML-bestanden., Plaats de volgende naamruimtewaarde in het lint.xml bestand, zodat het lint Gereedschap het attribuut herkent:

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

het volgende voorbeeld laat zien hoe u de controle van pluisjes kunt uitschakelen voor hetUnusedResources probleem in het <LinearLayout> element van een xmllayout bestand. Het attribuut ignore wordt overgenomen door de children-elementen van het ouderelement waarin het attribuut wordt gedeclareerd. In dit voorbeeld is de lint controle ook uitgeschakeld voor het kind <TextView> element.,

om meer dan één probleem uit te schakelen, geeft u een lijst op van de uit te schakelen problemen in een door komma ‘ s gescheiden tekenreeks. Bijvoorbeeld:

tools:ignore="NewApi,StringFormatInvalid"

Voor het onderdrukken van de controle voor alle lint problemen in het XML-element, gebruikt u de all trefwoorden,zoals:

tools:ignore="all"

Configureren lint opties met Gradle

De Android-plugin voor Gradle kunt u bepaalde lint opties zoals die controles uit te voeren of te negeren, het gebruik van de lintOptions {} – blok in de module-niveau build.gradle bestand., Het volgende codefragment toont u enkele eigenschappen die u kunt configureren:

creëer waarschuwingen baseline

u kunt een momentopname maken van de huidige set waarschuwingen van uw project, en vervolgens de momentopname gebruiken als basislijn voor toekomstige inspectieruns, zodat alleen nieuwe problemen worden gerapporteerd. De basislijn snapshot kunt u beginnen met het gebruik van lint om de build mislukken zonder terug te gaan en alle bestaande problemen eerst aan te pakken.

om een basislijn snapshot te maken, wijzigt u het build.gradle bestand als volgt.,

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

wanneer u deze regel voor het eerst toevoegt, wordt het bestand lint-baseline.xml aangemaakt om uw basislijn vast te stellen. Vanaf dat moment lezen de tools alleen het bestand om de basislijn te bepalen. Als u een nieuwe basislijn wilt maken, verwijdert u het bestand handmatig en voert u lint opnieuw uit om het opnieuw te maken.

voer lint uit vanaf de IDE (analyseer > inspecteer Code) of vanaf de commandoregel als volgt. De uitvoer drukt de locatie af van het lint-baseline.xml bestand. De bestandslocatie voor uw installatie kan afwijken van wat hier wordt weergegeven.,

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

draaiend lint registreert alle huidige problemen in het lint-baseline.xml bestand. De set van huidige problemen wordt de baseline genoemd, en u kunt het lint-baseline.xml bestand in versiebeheer controleren als u het met anderen wilt delen.

Pas de basislijn aan

als u enkele probleemtypen aan de basislijn wilt toevoegen, maar niet allemaal, kunt u de toe te voegen problemen opgeven door build.gradle van uw project te bewerken, als volgt.,

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

na het aanmaken van de basislijn, als u nieuwe waarschuwingen aan de codebase toevoegt, toont lint alleen de nieuw geïntroduceerde bugs.

Basislijnwaarschuwing

wanneer basislijnen van kracht zijn, krijgt u een informatieve waarschuwing die u vertelt dat een of meer kwesties werden uitgefilterd omdat ze al in de basislijn waren opgenomen. De reden voor deze waarschuwing is om u te helpen onthouden dat u een baseline hebt geconfigureerd, omdat u idealiter alle problemen op een bepaald moment wilt oplossen.,

deze informatieve waarschuwing vertelt u niet alleen het exacte aantal fouten en waarschuwingen die werden uitgefilterd, het houdt ook bij welke problemen niet meer worden gerapporteerd. Deze informatie laat u weten of u daadwerkelijk problemen hebt opgelost, zodat u optioneel opnieuw de basislijn kunt maken om te voorkomen dat de fout onopgemerkt terugkomt.

opmerking: basislijnen zijn ingeschakeld wanneer u inspecties in batchmodus uitvoert in de IDE, maar ze worden niet gebruikt voor de in-editor-controles die op de achtergrond worden uitgevoerd wanneer u een bestand bewerkt., De reden is dat baselines bedoeld zijn voor het geval dat een codebase een enorm aantal bestaande waarschuwingen heeft,maar je wilt problemen lokaal oplossen terwijl je de code aanraakt.

handmatig inspecties uitvoeren

u kunt handmatig geconfigureerde lint-en andere IDE-inspecties uitvoeren door analyse > Inspect Code te selecteren. De resultaten van de inspectie worden weergegeven in het venster inspectieresultaten.,

stel het inspectiebereik en profiel in

Selecteer de bestanden die u wilt analyseren (inspectiebereik) en de inspecties die u wilt uitvoeren (inspectieprofiel), als volgt:

  1. in de Android-weergave opent u uw project en selecteert u het project, een map of een bestand dat u wilt analyseren.
  2. in de menubalk selecteert u analyseren > inspecteer Code.
  3. controleer de instellingen in het dialoogvenster Inspectiebereik opgeven.

    Figuur 3., Controleer de instellingen voor inspectiebereik

    De combinatie van opties die worden weergegeven in het dialoogvenster Inspectiebereik Opgeven is afhankelijk van of u een project, map of bestand hebt geselecteerd. U kunt wijzigen wat u wilt inspecteren door een van de andere keuzerondjes te selecteren. Ziespecify inspection scope dialoogvenster voor een beschrijving van alle mogelijke velden in de Specificeer Inspection Scope dialoogvenster.

    • wanneer u een project, bestand of map selecteert, toont het dialoogvenster Inspectiebereik opgeven het pad naar het geselecteerde Project, bestand of map.,
    • wanneer u meer dan één project, bestand of map selecteert, toont het dialoogvenster Inspectiebereik opgeven een keuzerondje voor geselecteerde bestanden.
  4. onder Inspectieprofiel behoudt u het standaardprofiel (Project standaard).
  5. klik op OK om de inspectie uit te voeren. Figuur 4 toont pluis en andere IDE inspectieresultaten van de Inspect Code run:

    Figuur 4. Selecteer een probleem om de resolutie

  6. te zien in de boomstructuur van het linkerdeelvenster, bekijk de inspectieresultaten door foutcategorieën, typen en problemen uit te breiden en te selecteren.,

    het rechterdeelvenster toont het inspectierapport voor de geselecteerde foutcategorie, type of probleem en geeft de naam en locatie van de fout weer. Indien van toepassing worden in het inspectierapport andere informatie weergegeven, zoals een probleemsynopsis om u te helpen het probleem op te lossen.

  7. klik met de rechtermuisknop op een categorie, type of probleem om het contextmenu weer te geven.

    afhankelijk van de context kunt u het volgende doen: naar de bron springen, geselecteerde items uitsluiten en opnemen, problemen onderdrukken, instellingen bewerken, inspectiewaarschuwingen beheren en een inspectie opnieuw uitvoeren.,

voor beschrijvingen van de Linkerwerkbalkknoppen, contextmenu-items en de velden inspectieverslag, zie het venster Inspectiegereedschap.

gebruik een aangepast bereik

u kunt een van de aangepaste scopes in Android Studio als volgt gebruiken:

  1. in het dialoogvenster Inspectiebereik opgeven klikt u op aangepast bereik.
  2. klik op de vervolgkeuzelijst aangepast bereik om uw opties weer te geven.

    Figuur 5. Selecteer het aangepaste bereik dat u wilt gebruiken

    • projectbestanden: alle bestanden in het huidige project.,
    • Projectproductiebestanden: alleen de productiebestanden in het huidige project.
    • Project testbestanden: alleen de testbestanden in het huidige project. Zie testtypen en locatie.
    • Open bestanden: alleen de bestanden die u in het huidige project hebt geopend.
    • Module <uw-module>: alleen de bestanden in de bijbehorende module map in uw huidige project.
    • Huidig bestand: alleen het huidige bestand in uw huidige project. Verschijnt wanneer u een bestand of map hebt geselecteerd.,
    • Klassenhiërarchie: wanneer u deze selecteert en op OK klikt, verschijnt er een dialoogvenster met alle klassen in het huidige project. Gebruik het veld Zoeken op naam in het dialoogvenster om de te inspecteren klassen te filteren en te selecteren. Als u de klassenlijst niet filtert, inspecteert code inspection alle klassen.
  3. klik op OK.

Maak een aangepast bereik

wanneer u een selectie van bestanden en mappen wilt inspecteren die niet door een van de momenteel beschikbare aangepaste scopes wordt gedekt, kunt u een aangepast bereik maken.,

  1. selecteer Aangepast bereik in het dialoogvenster Inspectiebereik opgeven.
  2. klik op de drie punten na de vervolgkeuzelijst aangepast bereik.

    Figuur 6. Specificeer het dialoogvenster Inspectiebereik

    het dialoogvenster Scopes verschijnt.

    Figuur 7. Maak een aangepast bereik

  3. klik op Voeg toe om een nieuw bereik te definiëren.
  4. in de resulterende Scope toevoegen keuzelijst, Selecteer lokaal.

    zowel de lokale als de gedeelde scopes worden gebruikt binnen het project voor de inspecteer Code functie., Een gedeelde scope kan ook worden gebruikt met andere projectfuncties die een scope-veld hebben. Als u bijvoorbeeld op Instellingen bewerken klikt om de instellingen voor Zoekgebruiken te wijzigen, heeft het resulterende dialoogvenster een Scope-veld waarin u een gedeelde scope kunt selecteren.

    Figuur 8. Selecteer een gedeeld bereik in het dialoogvenster Gebruik zoeken

  5. geef het bereik een naam en klik op OK.

    het rechterdeelvenster van het dialoogvenster Scopes vult met opties waarmee u het aangepaste bereik kunt definiëren.

  6. in de vervolgkeuzelijst selecteert u Project.,

    Er verschijnt een lijst met beschikbare projecten.

    Opmerking: U kunt het aangepaste bereik voor projecten of pakketten maken. De stappen zijn hoe dan ook hetzelfde.

  7. vouw de projectmappen uit, selecteer wat u aan het aangepaste bereik wilt toevoegen en klik op een van de knoppen aan de rechterkant.

    figuur 9. Definieer een aangepast bereik

    • Include: Include deze map en zijn bestanden, maar geen van zijn submappen.
    • recursief opnemen: Deze map en alle bestanden en submappen en hun bestanden opnemen.,
    • Exclude: sluit deze map en zijn bestanden uit, maar sluit geen van zijn submappen uit.
    • recursief uitsluiten: de map met alle bestanden en submappen en hun bestanden uitsluiten.

    Figuur 10 laat zien dat de hoofdmap is opgenomen, en dat de java-map recursief is opgenomen. De blauwe geeft gedeeltelijk opgenomen mappen en de groene geeft recursief opgenomen mappen en bestanden.

    Figuur 10., Voorbeeldpatroon voor een aangepast bereik

    • Als u de java-map selecteert en recursief op uitsluiten klikt, verdwijnt de groene accentuering in de java-map en alle mappen en bestanden eronder.
    • Als u in plaats daarvan de groen gemarkeerde hoofdactiviteit selecteert.java-bestand en klik op uitsluiten, MainActivity.java is niet langer groen gemarkeerd, maar al het andere onder de java-map is groen gemarkeerd.
  8. klik op OK. Het aangepaste bereik wordt onder aan de vervolgkeuzelijst weergegeven.,

inspectieprofielen bekijken en bewerken

Android Studio wordt geleverd met een selectie van lint-en andere inspectieprofielen die worden bijgewerkt viaandroid-updates. U kunt deze profielen gebruiken zoals ze zijn of hun namen, beschrijvingen, severities, andscopes bewerken. U kunt ook hele groepen profielen of individuele profielen binnen een groep activeren en deactiveren.

om toegang te krijgen tot het dialoogvenster inspecties:

  1. Selecteer analyseren > Inspect Code.
  2. klik in het dialoogvenster bereik opgeven onder Inspectieprofiel op Meer.,

    het dialoogvenster inspecties verschijnt met een lijst van de ondersteunde inspecties en hun beschrijvingen.

    Figuur 11. Ondersteunde inspecties en hun beschrijvingen

  3. Selecteer de vervolgkeuzelijst profiel om te schakelen tussen standaard (Android Studio) en Project standaard (het actieve project) inspecties. Voor meer informatie, zie deze IntelliJSpecify Inspection Scope dialoogvenster Pagina.
  4. selecteer in het dialoogvenster inspecties in het linkerdeelvenster een profielcategorie op het hoogste niveau, of vouw een groep uit en selecteer een specifiek profiel., Wanneer u een profielcategorie selecteert, kunt u alle inspecties in die categorie als één inspectie bewerken.
  5. Selecteer de keuzelijst beheren om inspecties te kopiëren, hernoemen, beschrijvingen toe te voegen, te exporteren en te importeren.
  6. Als u klaar bent, klikt u op OK.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *