Forbedre din kode med lint kontrol

posted in: Articles | 0

ud over at sikre din app opfylder de funktionelle krav, der er ved at bygge tests, det’simportant, at du også sikre din kode har ingen strukturelle problemer ved at køre kode throughlint. Lint-værktøjet hjælper med at finde dårligt struktureret kode, der kan påvirke pålideligheden og effektiviteten af dine Android-apps og gøre din kode sværere at vedligeholde.

for eksempel, hvis dine resourceml-ressourcefiler indeholder ubrugte navnerum, tager dette Plads og incursunnecessary processing., Andre strukturelle problemer, såsom brug af forældede elementer eller API-opkald, der ikke understøttes af API-versionerne, kan føre til, at kode ikke kører korrekt.Lint kan hjælpe dig med at rydde op i disse problemer.

for yderligere at forbedre linting ydeevne, bør du ogsåTilføj kommentarer til din kode.

oversigt

Android Studio giver et kodescanningsværktøj kaldet lintdet kan hjælpe dig med at identificere og rette problemer med den strukturelle kvalitet af din kodeuden at du skal udføre appen eller skrive testsager., Hvert problem, der opdages af værktøjet, rapporteres med en beskrivelsesmeddelelse og et sværhedsniveau, så du hurtigt kan prioritere de kritiske forbedringer, der skal foretages. Du kan også sænke sværhedsgraden af et problem for at forbedre problemer, der ikke er relevante for dit projekt, eller hæve sværhedsgraden for at fremhæve specifikke problemer.lint-værktøjet kontrollerer dine Android-projektkildefiler for potentielle fejl og optimeringsforbedringer for korrekthed, sikkerhed, ydeevne, brugervenlighed, tilgængelighed og internationalisering., Når du bruger Android Studio, kører konfigurerede lint-og IDE-inspektioner, når du bygger din app. Du kan dog manuelt køre inspektioner eller køre lint fra kommandolinjen.Bemærk: Når din kode er kompileret i Android Studio, kører additionalintellij-kodeinspektioner tostreamline-kodeanmeldelse.figur 1 viser, hvordan lintværktøjet behandler applikationskildefilerne.

Figur 1., Kodescannings workorkflo.med lint-værktøjet

program kildefiler kildefilerne består af filer, der udgør dit Android-projekt, herunder Java -, Kotlin -, and .ml-filer, ikoner og ProGuard-konfigurationsfiler. Denlint.xmlfil en konfigurationsfil, som du kan bruge til at angive enhver fnug kontrol, du ønsker toecclude og til at tilpasse problemet Sværhedsgrad niveauer. Lint tool et statisk kodescanningsværktøj, som du kan køre på dit Android-projekt enten fra kommandolinjen eller inAndroid Studio (Se manuelt Kør inspektioner)., Den linttool kontrollerer for strukturelle kode problemer, der kan påvirke kvaliteten og ydeevnen af yourAndroid ansøgning. Det anbefales kraftigt, at du retter eventuelle fejl, som lint detektererfør du offentliggør din ansøgning. Resultater af lint kontrol du kan se resultaterne fra lint enten i konsollen eller i vinduet inspektion resultater i Android Studio. Se manuelt køre inspektioner.,

Kør fnug fra kommandolinjen

Hvis du bruger Android Studio eller Gradle, kan du bruge Gradle wrapper til at påberåbe sig den lint opgave til dit projekt ved at indtaste en af følgende kommandoer fra rodmappen på dit projekt:

  • i Windows:
    gradlew lint
  • På Linux eller Mac:
    ./gradlew lint

Du bør se et output, der svarer til følgende:

Når fnug af fuldender sin kontrol, det giver stier til XML og HTML-versioner af fnug rapport., Du kan derefter navigere til HTML-rapporten og åbne den i din bro .ser, som vist i figur 2.

Figur 2. Eksempel på HTML-lintrapport

Hvis dit projekt indeholder build-varianter, og du i stedet ønsker at køre lint – opgaven for kun en bestemt build-variant, skal du aktivere variantnavnet og præfiksere det med lint.

gradlew lintDebug

Hvis du vil vide mere om at køre Gradle-opgaver fra kommandolinjen, skal du læse Byg din App fra kommandolinjen.,

Kør lint hjælp standalone værktøj

Hvis du ikke bruger Android Studio eller Gradle, kan du bruge den enkeltstående lint værktøj, når du har installeret Android SDK Værktøjer fra SDK Manager. Du kan derefter finde lintværktøjet i mappenandroid_sdk/tools/.

for At køre fnug, mod en liste af filer i et projekt mappe, skal du bruge følgende kommando:

lint <project directory>

For eksempel, kan du udføre følgende kommando til at scanne filer undermyproject mappe og dens undermapper., Issue ID MissingPrefixfortæller lint kun at scanne efter prefml-attributter, der mangler Android-navneområdepræfikset.

lint --check MissingPrefix myproject 

for At se den fulde liste af flag og kommandolinje-argumenter, der understøttes af værktøj, brug denfølgende kommando:

lint --help

følgende eksempel viser console output, når lint kommandoen er kørt mod aproject kaldes Jordskælv.,

output ovenstående liste fire advarsler, og ingen fejl: tre advarsler (ManifestOrder UsesMinSdkAttributes og UnusedResources) inthe projektets AndroidManifest.xml fil, og en advarsel (IconMissingDensityFolder) i Preferences.xml layout-fil.

Konfigurer lint til at undertrykke advarsler

som standard når du kører en lint-scanning, kontrollerer værktøjet for alle problemer, som lint understøtter. Du kan også begrænse problemerne for lint til at kontrollere og tildele sværhedsgraden for disse problemer., For eksempel kan du undertrykke fnugkontrol for specifikke problemer, der ikke er relevante for dit projekt, og du kan konfigurere lint til at rapportere ikke-kritiske problemer på et lavere sværhedsniveau.

Du kan konfigurere lint at kontrollere for forskellige niveauer:

  • Globalt (hele projektet)
  • Projekt modul
  • Produktion modul
  • Test modul
  • Åbn filer
  • Klasse-hierarki
  • Version Control System (VCS) scopes

Indstil fnug i Android Studio

Den indbyggede lint værktøj kontrollerer din kode, mens du er usingAndroid Studio., Du kan se advarsler og fejl på to måder:

  • som pop op-tekst i kodeditoren. Når lint finder et problem, fremhæver detDen problematiske kode i gul eller for mere alvorlige problemer understreger den koden i rødt.
  • i vinduet lint Inspection Results, når du har klikket analyser > Undersøg kode.Se manuelt køre inspektioner.

Konfigurer lintfilen

Du kan angive dine indstillinger for lintkontrol ilint.xml filen. Hvis du opretter denne fil manuelt, skal du placere den i rodmappen på dit Android-projekt.,

lint.xml fil består af en vedlagt <lint> forælder tag thatcontains et eller flere børn <issue> – elementer. Lint definerer en unikid attributværdi for hver<issue>.

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

Du kan ændre et problems alvorlighedsniveau eller deaktivere lintkontrol for problemet ved at indstille sværhedsattributten i <issue> tag., tip: for en komplet liste over lint-understøttede problemer og deres tilsvarende issue-id ‘ er skal du køre kommandoen lint --list.

Sample lint.l-fil

følgende eksempel viser indholdet af en lint.xml fil.

Konfigurer lint kontrol af Java -, Kotlin-og sourceml-kildefiler

Du kan deaktivere lint fra at kontrollere dine Java -, Kotlin-og .ml-kildefiler.tip: du kan administrere lintkontrolfunktionen for dine Java -, Kotlin-eller sourceml-kildefiler i standardindstillingsdialogen., Vælg fil > andre indstillinger > standardindstillinger, og vælg derefter Editor > inspektioner i venstre rude i dialogen standardindstillinger.

Konfiguration lint kontrol i Java eller Kotlin

for At deaktivere lint kontrol specifikt for en klasse eller en metode i din Android-projekt,skal du tilføje @SuppressLint kommentering til at kode.

følgende eksempel viser, hvordan du kan slukke lint kontrollerer for NewApiproblem onCreate metode., Lintværktøjet kontrollerer fortsat forNewApi i andre metoder i denne klasse.,

følgende eksempel viser, hvordan man kan slukke lint kontrollerer for ParserErrorproblem FeedProvider class:

for At undertrykke kontrol for alle fnug spørgsmål i filen, skal du bruge all søgeord,som denne:

Kotlin

@SuppressLint("all")

Java

@SuppressLint("all")

Konfiguration lint kontrol i XML

Du kan bruge tools:ignore – attributten for at deaktivere lint kontrol for specifikke dele af din XML-filer., Put den følgende namespace værdi i lint.xml fil, så fnug af genkender attribut:

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

følgende eksempel viser, hvordan du kan slukke lint kontrollerer forUnusedResources problem <LinearLayout> element af en XMLlayout fil. Attributten ignore er arvet af børnenes elementer i det forældreelement, hvor attributten er erklæret. I dette eksempel er lintcheck også deaktiveret forbarn <TextView> element.,

Hvis du vil deaktivere mere end et problem, skal du liste de problemer, der skal deaktiveres, i en kommasepareret streng. Forexample:

tools:ignore="NewApi,StringFormatInvalid"

for At undertrykke kontrol for alle fnug spørgsmål i XML-element, skal du bruge all søgeord,som dette:

tools:ignore="all"

Indstil lint muligheder med Gradle

Android-plugin til Gradle giver dig mulighed for at konfigurere visse lint valg, som kontrol for at køre eller ignorere, ved brug af lintOptions {} blok i dit modul-niveau build.gradle fil., Følgende kodestykke viser dig nogle af de egenskaber, du kan konfigurere:

Opret advarsler baseline

Du kan tage et øjebliksbillede af projektets aktuelle sæt advarsler og derefter bruge snapshot som basislinje til fremtidige inspektionskørsler, så kun nye problemer rapporteres. Baseline snapshot giver dig mulighed for at begynde at bruge lint til at mislykkes bygningen uden at skulle gå tilbage og løse alle eksisterende problemer først.

for at oprette et baseline snapshot skal du ændre dit projekts build.gradle fil som følger.,

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

Når du først tilføjer denne linje, oprettes lint-baseline.xml filen for at etablere din baseline. Fra da af læser værktøjerne kun filen for at bestemme baseline. Hvis du vil oprette en ny baseline, skal du manuelt slette filen og køre lint igen for at genskabe den.

kør derefter lint fra IDE (analyser > Undersøg kode) eller fra kommandolinjen som følger. Udgangen udskriver placeringen af lint-baseline.xml fil. Filplaceringen for din opsætning kan være forskellig fra det, der vises her.,

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

Kører lint registrerer alle thecurrent spørgsmål i lint-baseline.xml fil. Sættet med aktuelle problemer kaldes baseline, og du kan kontrollere lint-baseline.xml fil til versionskontrol, hvis du vil dele den med andre.

Tilpas baseline

Hvis du vil tilføje nogle problemtyper til baseline, men ikke alle af dem, kan du angive de problemer, der skal tilføjes, ved at redigere dit projektbuild.gradle, som følger.,

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

Når du har oprettet baseline, hvis du tilføjer nye advarsler til kodebasen, lint lister kun de nyligt introducerede fejl.

Baseline advarsel

Når basislinjer er i kraft, får du en oplysende advarsel, der fortæller dig, at en eller moreissues blev filtreret ud, fordi de allerede var opført i baseline. Grunden til thisararning er at hjælpe dig med at huske, at du har konfigureret en baseline, fordi ideelt set, youwouldould ønsker at løse alle de spørgsmål på et tidspunkt.,

denne informative advarsel fortæller dig ikke kun det nøjagtige antal fejl og advarsler, der blev filtreret ud, den holder også styr på problemer, der ikke rapporteres længere. Disse oplysninger fortæller dig, om du faktisk har løst problemer, så du kan eventuelt genskabe baseline for at forhindre fejlen i at komme tilbage uopdaget.Bemærk: Baselines er aktiveret, når du kører inspektioner i batch-tilstand i IDE, men de ignoreres for de in-editor-kontroller, der kører i baggrunden, når du redigerer en fil., Årsagen er, at basislinjer er beregnet til det tilfælde,hvor en kodebase har et enormt antal eksisterende advarsler, men du vil løse problemer lokalt, mens du rører ved koden.

Manuelt køre inspektioner

Du kan køre manuelt konfigureret fnug og andre IDE-inspektioner ved at vælge Analysere > Inspicere Koden. Resultaterne af inspektionen vises i vinduet inspektionsresultater.,

Indstil inspektion omfang og profil

Vælg de filer, du ønsker at analysere (inspektion omfang) og theinspections du ønsker at køre (inspektion profil), som følger:

  1. I Android se, åbne dit projekt, og skal du vælge det projekt, en mappe eller en fil, som du ønsker at analysere.
  2. Vælg analyser > Undersøg kode i menulinjen.
  3. gennemgå indstillingerne i dialogboksen angiv Inspektionsomfang.

    Figur 3., Gennemgå indstillingerne for inspektionsomfang

    kombinationen af indstillinger, der vises i dialogboksen angiv Inspektionsomfang, varierer afhængigt af, om du valgte et projekt, en mappe eller en fil. Du kan ændre, hvad du skal inspicere ved at vælge en af de andre radioknapper. Se specificer inspektionsomfang dialog for en beskrivelse af alle de mulige felter på Angiv Inspektionsomfang dialog.

    • når du vælger et projekt, en fil eller en mappe, viser dialogboksen angiv Inspektionsomfang stien til det projekt, den fil eller den mappe, du har valgt.,
    • når du vælger mere end et projekt, en fil eller en mappe, viser dialogboksen angiv Inspektionsomfang en markeret radioknap for valgte filer.
  4. under Inspektionsprofil skal du beholde standardprofilen (Projektstandard).
  5. Klik på OK for at køre inspektionen. Figur 4 viser lint og andre IDE-inspektionsresultater fra Undersøgelseskoden Kør:

    figur 4. Vælg et problem for at se dets opløsning

  6. i venstre rude trævisning, se inspektionsresultaterne ved at udvide og vælge fejlkategorier, typer og problemer.,

    den højre rude viser inspektionsrapporten for den valgte fejlkategori, type eller problem og angiver navnet og placeringen af fejlen. Hvor det er relevant, viser inspektionsrapporten andre oplysninger, såsom en problemsynopsis, der hjælper dig med at løse problemet.

  7. Højreklik på en kategori, type eller problem i venstre rude for at få vist genvejsmenuen.

    Afhængig af den kontekst, du kan gøre alle eller nogle af følgende: gå til kilden, ekskludere og inkludere udvalgte elementer, undertrykke problemer, redigere indstillinger, administrere inspektion indberetninger, og køre en inspektion.,

For beskrivelser af venstre værktøjslinjeknapper, kontekstmenupunkter og inspektionsrapportfelter, se vinduet inspektionsværktøj.

brug et brugerdefineret omfang

Du kan bruge en af de brugerdefinerede scopes, der findes i Android Studio, som følger:

  1. klik på Brugerdefineret omfang i dialogboksen angiv Inspektionsomfang.
  2. Klik på rullelisten brugerdefineret omfang for at få vist dine indstillinger.

    figur 5. Vælg det brugerdefinerede omfang, du vil bruge

    • projektfiler: alle filerne i det aktuelle projekt.,
    • Project Production Files: kun produktionsfilerne i det aktuelle projekt.
    • projekt testfiler: kun testfilerne i det aktuelle projekt. Se testtyper og placering.
    • Åbn filer: kun de filer, du har åbnet i det aktuelle projekt.
    • modul <dit modul>: kun filerne i den tilsvarende modulmappe i dit aktuelle projekt.
    • Aktuel fil: kun den aktuelle fil i dit aktuelle projekt. Vises, når du har valgt en fil eller mappe.,
    • Klassehierarki: når du vælger dette og klikker på OK, vises en dialog med alle klasserne i det aktuelle projekt. Brug feltet Søg efter navn i dialogboksen til at filtrere og vælg de klasser, der skal inspiceres. Hvis du ikke filtrerer klasselisten, inspicerer code inspection alle klasserne.
  3. Klik på OK.

Opret et brugerdefineret omfang

Når du vil inspicere et udvalg af filer og mapper, der ikke er dækket af nogen af de aktuelt tilgængelige brugerdefinerede områder, kan du oprette et brugerdefineret omfang.,

  1. Vælg Brugerdefineret omfang i dialogboksen angiv Inspektionsomfang.
  2. Klik på de tre prikker efter rullelisten brugerdefineret omfang.

    Figur 6. Angiv dialogboksen Inspektionsomfang

    dialogboksen Scopes vises.

    Figur 7. Opret et brugerdefineret omfang

  3. Klik på Tilføj for at definere et nyt omfang.
  4. Vælg lokal i rullelisten Tilføj omfang.

    både de lokale og delte scopes bruges i projektet til funktionen Inspect Code., Et delt omfang kan også bruges sammen med andre projektfunktioner, der har et scope-felt. Når du f.eks. klikker på Rediger Indstillinger for at ændre indstillingerne for Find anvendelser, har den resulterende dialog et anvendelsesområde, hvor du kan vælge et delt omfang.

    Figur 8. Vælg et delt omfang i dialogboksen Find anvendelser

  5. Giv omfanget et navn, og klik på OK.

    den højre rude i dialogboksen Scopes udfyldes med indstillinger, der giver dig mulighed for at definere det tilpassede omfang.

  6. Vælg projekt på rullelisten.,

    en liste over tilgængelige projekter vises.

    Bemærk: Du kan oprette brugerdefinerede muligheder for projekter eller pakker. Trinene er de samme enten måde.

  7. Udvid projektmapperne, vælg, hvad du vil tilføje til det brugerdefinerede omfang, og klik på en af knapperne til højre.

    Figur 9. Definer et brugerdefineret omfang

    • Inkluder: Inkluder denne mappe og dens filer, men medtag ikke nogen af dens undermapper.
    • Inkluder rekursivt: Medtag denne mappe og alle dens filer og undermapper og deres filer.,
    • Ekskluder: Ekskluder denne mappe og dens filer, men udelukker ikke nogen af dens undermapper.
    • Ekskluder rekursivt: Ekskluder THS-mappen og alle dens filer og undermapper og deres filer.Figur 10 viser, at hovedmappen er inkluderet, og at java-mappen er inkluderet rekursivt. Den blå angiver delvist inkluderede mapper, og den grønne angiver rekursivt inkluderede mapper og filer.

      Figur 10., Eksempel mønster for et brugerdefineret omfang

      • hvis du vælger java-mappen og klikker på Ekskluder rekursivt, går den grønne fremhævning væk i java-mappen og alle mapper og filer under den.
      • hvis du i stedet vælger den grønne fremhævede hovedaktivitet.java-fil, og klik på Ekskluder, MainActivity.java er ikke længere grønt fremhævet, men alt andet under java-mappen er grønt fremhævet.
    • Klik på OK. Det brugerdefinerede omfang vises nederst på rullelisten.,

gennemgå og rediger inspektionsprofiler

Android Studio leveres med et udvalg af lint og andre inspektionsprofiler, der opdateres gennemandroid-opdateringer. Du kan bruge disse profiler som de er eller redigere deres navne, beskrivelser, sværhedsgrader, andscopes. Du kan også aktivere og deaktivere hele grupper af profiler eller individuelle profiler inden for en gruppe.

for at få adgang til Inspektionsdialogen:

  1. Vælg analyser > Undersøg kode.
  2. Klik på mere i dialogboksen angiv omfang under Inspektionsprofil.,

    dialogen inspektioner vises med en liste over de understøttede inspektioner og deresbeskrivelser.

    Figur 11. Understøttede inspektioner og deres beskrivelser

  3. Vælg rullelisten profil for at skifte mellem standardinspektioner (Android Studio) og projektstandardinspektioner (det aktive projekt). For mere information, se denne IntelliJSpecify inspektion omfang Dialog side.
  4. i dialogboksen inspektioner i venstre rude skal du vælge en topniveauprofilkategori eller udvide en gruppe og vælge en bestemt profil., Når du vælger en profilkategori, kan du redigere alle inspektioner i denne kategori som en enkelt inspektion.
  5. Vælg rullelisten Administrer for at kopiere, omdøbe, tilføje beskrivelser til, Eksportere og importere inspektioner.
  6. når du er færdig, skal du klikke på OK.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *