Android
Lint Waarschuwingen
Zoeken…
Opmerkingen
De Lint-tool controleert de bronbestanden van uw Android-project op mogelijke bugs en optimalisatieverbeteringen op correctheid, beveiliging, prestaties, bruikbaarheid, toegankelijkheid en internationalisering. U kunt Lint uitvoeren vanaf de opdrachtregel of vanuit Android Studio.
Officiële documentatie:
Tools gebruiken: negeren in XML-bestanden
De attributentools tools:ignore
kunnen in XML-bestanden worden gebruikt om pluiswaarschuwingen te negeren.
MAAR het afwijzen van pluiswaarschuwingen met deze techniek is meestal de verkeerde manier om verder te gaan.
Een pluiswaarschuwing moet worden begrepen en verholpen ... het kan worden genegeerd als en alleen als u de betekenis ervan volledig begrijpt en een goede reden hebt om het te negeren.
Hier is een gebruikssituatie waarbij het legitiem is om een pluiswaarschuwing te negeren:
- U ontwikkelt een systeem-app (ondertekend met de sleutel van de apparaatfabrikant)
- Uw app moet de apparaatdatum (of een andere beveiligde actie) wijzigen
Dan kunt u dit doen in uw manifest: (dwz de beveiligde toestemming aanvragen en de pluiswaarschuwing negeren omdat u weet dat in uw geval de toestemming wordt verleend)
<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"/>
Bronnen worden geïmporteerd zonder de fout 'Verouderd'
Met behulp van de Android API 23 of hoger kan een dergelijke situatie vaak worden gezien:
Deze situatie wordt veroorzaakt door de structurele wijziging van de Android API met betrekking tot het verkrijgen van de bronnen. Nu de functie:
public int getColor(@ColorRes int id, @Nullable Theme theme) throws NotFoundException
zou gebruikt moeten worden. Maar de android.support.v4-bibliotheek heeft een andere oplossing.
Voeg de volgende afhankelijkheid toe aan het bestand build.gradle:
com.android.support:support-v4:24.0.0
Dan zijn alle methoden uit de ondersteuningsbibliotheek beschikbaar:
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));
Bovendien kunnen meer methoden uit de ondersteuningsbibliotheek worden gebruikt:
ViewCompat.setElevation(textView, 1F);
ViewCompat.animate(textView);
TextViewCompat.setTextAppearance(textView, R.style.AppThemeTextStyle);
...
LintOptions configureren met gradle
U kunt lint configureren door een sectie lintOptions
toe te voegen aan het bestand 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
}
}
U kunt lint uitvoeren voor een specifieke variant (zie hieronder), bijvoorbeeld ./gradlew lintRelease
, of voor alle varianten ( ./gradlew lint
), in welk geval het een rapport produceert dat beschrijft op welke specifieke varianten een bepaald probleem van toepassing is.
Kijk hier voor de DSL-referentie voor alle beschikbare opties .
Hoe het lint.xml-bestand te configureren
U kunt uw voorkeuren voor het controleren van Lint opgeven in het lint.xml
bestand. Als u dit bestand handmatig maakt, plaatst u het in de hoofdmap van uw Android-project. Als u Lint-voorkeuren in Android Studio configureert, wordt het lint.xml-bestand automatisch voor u gemaakt en aan uw Android-project toegevoegd.
Voorbeeld:
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<!-- list of issues to configure -->
</lint>
Door de ernstwaarde in de tag in te stellen, kunt u Lint-controle op een probleem uitschakelen of het ernstniveau voor een probleem wijzigen.
Het volgende voorbeeld toont de inhoud van een lint.xml
bestand.
<?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>
Lintcontrole configureren in Java- en XML-bronbestanden
U kunt Lint-controle uitschakelen vanuit uw Java- en XML-bronbestanden.
Pluiscontrole configureren in Java
Als u Lint-controle specifiek voor een Java-klasse of -methode in uw Android-project wilt uitschakelen, voegt u de annotatie @SuppressLint
aan die Java-code.
Voorbeeld:
@SuppressLint("NewApi")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Controle van alle Lint-problemen uitschakelen:
@SuppressLint("all")
Pluiscontrole configureren in XML
U kunt de tools:ignore
attribuut om Lint-controle voor specifieke secties van uw XML-bestanden uit te schakelen.
Bijvoorbeeld:
tools:ignore="NewApi,StringFormatInvalid"
Gebruik om de controle op alle Lint-problemen in het XML-element te onderdrukken
tools:ignore="all"
Markeer Waarschuwingen onderdrukken
Het is een goede gewoonte om enkele waarschuwingen in uw code te markeren. Sommige verouderde methoden zijn bijvoorbeeld nodig voor uw test of oude ondersteuningsversie. Maar lintcontrole zal die code markeren met waarschuwingen. Om dit probleem te voorkomen, moet u annotatie @SuppressWarnings gebruiken.
Voeg bijvoorbeeld negeren toe aan waarschuwingen aan verouderde methoden. U moet de beschrijving van de waarschuwingen ook in annotaties plaatsen:
@SuppressWarnings("deprecated");
public void setAnotherColor (int newColor) {
getApplicationContext().getResources().getColor(newColor)
}
Met deze annotatie kunt u alle waarschuwingen negeren, inclusief Lint, Android en andere. Met behulp van Waarschuwingen onderdrukken helpt u de code correct te begrijpen!