Source code
Revision control
Copy as Markdown
Other Tools
<?xml version="1.0" encoding="UTF-8"?>
<!-- This Source Code Form is subject to the terms of the Mozilla Public
- License, v. 2.0. If a copy of the MPL was not distributed with this
<!-- Shared Android lint rules for the Fenix and Focus applications. Referenced explicitly through
`lintConfig` in each app's build.gradle rather than being named lint.xml, so that it is never
picked up implicitly by another project through lint's directory hierarchy. -->
<lint>
<!-- The android-lint mozlint task reports every issue in the lint report as a failure, including
the informational note lint emits about findings filtered by the baseline. Silence just that
note; the baseline itself still grandfathers the underlying findings. -->
<issue id="LintBaseline" severity="ignore" />
<!-- Lints that don't apply to our translation process -->
<issue id="MissingTranslation" severity="ignore" />
<issue id="MissingQuantity" severity="ignore" />
<issue id="ImpliedQuantity" severity="ignore" />
<issue id="PluralsCandidate" severity="ignore" />
<issue id="StringFormatCount" severity="ignore" />
<issue id="TypographyEllipsis" severity="ignore" />
<issue id="ExtraTranslation" severity="ignore" />
<issue id="Untranslatable" severity="ignore" />
<issue id="MissingDefaultResource" severity="ignore" />
<!-- Which plural forms a language needs and whether to use a fraction character are the translators'
call, and the localized files come from the l10n import, so only check the default strings. -->
<issue id="UnusedQuantity">
<ignore path="**/values-*/strings.xml" />
</issue>
<issue id="TypographyFractions">
<ignore path="**/values-*/strings.xml" />
</issue>
<issue id="BrandUsage" severity="error">
<ignore path="**/values-*/strings.xml" />
<ignore path="**/values/*_strings.xml" />
<ignore path="**/values/app.xml" />
</issue>
<issue id="IncorrectStraightQuote" severity="error">
<ignore path="**/values-*/strings.xml" />
</issue>
<issue id="IncorrectStraightDoubleQuote" severity="error">
<ignore path="**/values-*/strings.xml" />
<ignore path="**/values/*_strings.xml" />
</issue>
<issue id="IncorrectEllipsisCharacter" severity="error">
<ignore path="**/values-*/strings.xml" />
</issue>
<issue id="BlankString" severity="error">
<ignore path="**/values/*_strings.xml" />
</issue>
<issue id="PlaceholderComment" severity="error">
<ignore path="**/values-*/strings.xml" />
<ignore path="**/values/*_strings.xml" />
</issue>
<issue id="Typos" severity="error">
<ignore path="**/values-*/strings.xml" />
</issue>
<!-- Lints that are disabled by default -->
<issue id="ConvertToWebp" severity="warning" />
<!-- Performance: big wins from a theoretical perspective so we escalate to error. -->
<issue id="DrawAllocation" severity="error" />
<issue id="Wakelock" severity="error" />
<issue id="WakelockTimeout" severity="error" />
<issue id="Recycle" severity="error" />
<issue id="StaticFieldLeak" severity="error" />
<issue id="ViewTag" severity="error" />
<issue id="ViewHolder" severity="error" />
<issue id="HandlerLeak" severity="error" />
<issue id="NestedWeights" severity="error" />
<!-- Performance: quick-to-fix violations so we escalate to error.
We haven't validated that they have a significant impact though. -->
<issue id="ObsoleteLayoutParam" severity="error" />
<issue id="ObsoleteSdkInt" severity="error" />
<issue id="AnimatorKeep" severity="error" />
<issue id="DuplicateDivider" severity="error" />
<issue id="MergeRootFrame" severity="error" />
<issue id="UseOfBundledGooglePlayServices" severity="error" />
<issue id="UseValueOf" severity="error" />
<issue id="InefficientWeight" severity="error" />
<issue id="DisableBaselineAlignment" severity="error" />
<issue id="UselessLeaf" severity="error" />
<issue id="UselessParent" severity="error" />
<issue id="UnusedNamespace" severity="error" />
<issue id="UnusedResources" severity="error">
<!-- Localized strings are removed by the l10n import a while after the string is removed from
the default strings.xml, so the localized files temporarily hold unreferenced strings. -->
<ignore path="**/values-*/strings.xml" />
</issue>
<issue id="UseCompoundDrawables" severity="error" />
<issue id="Overdraw" severity="error" />
<!-- Performance: checks that we're unsure of the value of that we might want to investigate. -->
<issue id="UnpackedNativeCode" severity="informational" />
<issue id="LogConditional" severity="informational" />
<issue id="UseSparseArrays" severity="informational" /> <!-- hurts developer convenience of kotlin Map... -->
<!-- Ignore due to baseline bloat and lack of actionability -->
<issue id="VectorPath" severity="ignore" />
<!-- Correctness: checks with increased severity -->
<issue id="ModifierParameter" severity="error" />
<issue id="PrivateResource" severity="error" />
<!-- Both apps disable language splits in their bundle block, which is this check's own escape hatch,
but lint does not pick that up and reports the first runtime locale change it finds. -->
<issue id="AppBundleLocaleChanges" severity="ignore" />
<!-- The wordmark is a vector in drawable-night and a bitmap per density everywhere else. -->
<issue id="IconXmlAndPng">
<ignore regexp="ic_logo_wordmark_normal" />
</issue>
</lint>