Malheureusement, il peut arriver que (comme sur l'image de l'article) lint se casse les dents sur votre projet en cours. C'est assez ennuyeux que l'outil d'aide à la découverte de potentiel bug se banane, mais on va voir que ce n'est pas TOUT lint qui est concerné.
Lint en CLI
L'outil lint est accessible en ligne de commande et est assez simple d'emploi : il suffit de donner en paramètre le dossier du projet.k@mbp /opt/android-sdk-update-manager/tools $ ./lint ~/workspace/JArriveDeSuite/ Scanning JArriveDeSuite: ................................................................................................................................................................Exception in thread "main" java.lang.NullPointerException at com.android.tools.lint.checks.IconDetector.checkDipSizes(IconDetector.java:651) at com.android.tools.lint.checks.IconDetector.checkResourceFolder(IconDetector.java:321) at com.android.tools.lint.checks.IconDetector.afterCheckProject(IconDetector.java:277) at com.android.tools.lint.client.api.LintDriver.checkProject(LintDriver.java:692) at com.android.tools.lint.client.api.LintDriver.analyze(LintDriver.java:285) at com.android.tools.lint.Main.run(Main.java:485) at com.android.tools.lint.Main.main(Main.java:131)Nous voila bien plus avancé qu'avec le message d'Eclipse.
./lint --help
Regardons ce que nous indique l'aide : --list et --disable semblent intéressants.k@mbp /opt/android-sdk-update-manager/tools $ lint
k@mbp /opt/android-sdk-update-manager/tools $ ./lint
Usage: lint [flags] <project directories>
Flags:
--help This message.
--help <topic> Help on the given topic, such as "suppress".
--list List the available issue id's and exit.
--version Output version information and exit.
--exitcode Set the exit code to 1 if errors are found.
--show List available issues along with full explanations.
--show <ids> Show full explanations for the given list of issue
id's.
Enabled Checks:
--disable <list> Disable the list of categories or specific issue
id's. The list should be a comma-separated list of
issue id's or categories.
--enable <list> Enable the specific list of issues. This checks all
the default issues plus the specifically enabled
issues. The list should be a comma-separated list of
issue id's or categories.
--check <list> Only check the specific list of issues. This will
disable everything and re-enable the given list of
issues. The list should be a comma-separated list of
issue id's or categories.
-w, --nowarn Only check for errors (ignore warnings)
-Wall Check all warnings, including those off by default
-Werror Treat all warnings as errors
--config <filename> Use the given configuration file to determine whether
issues are enabled or disabled. If a project contains
a lint.xml file, then this config file will be used
as a fallback.
Output Options:
--quiet Don't show progress.
--fullpath Use full paths in the error output.
--showall Do not truncate long messages, lists of alternate
locations, etc.
--nolines Do not include the source file lines with errors in
the output. By default, the error output includes
snippets of source code on the line containing the
error, but this flag turns it off.
--html <filename> Create an HTML report instead. If the filename is a
directory (or a new filename without an extension),
lint will create a separate report for each scanned
project.
--url filepath=url Add links to HTML report, replacing local path
prefixes with url prefix. The mapping can be a
comma-separated list of path prefixes to
corresponding URL prefixes, such as
C:\temp\Proj1=http://buildserver/sources/temp/Proj1.
To turn off linking to files, use --url none
--simplehtml <filename> Create a simple HTML report
--xml <filename> Create an XML report instead.
Exit Status:
0 Success.
1 Lint errors detected.
2 Lint usage.
3 Cannot clobber existing file.
4 Lint help.
5 Invalid command-line argument.
Voyons ce qu'il y'a d'intéressant dans la liste --list
k@mbp /opt/android-sdk-update-manager/tools $ ./lint --list | grep icon "IconDensities": Ensures that icons provide custom versions for all supported "IconDipSize": Ensures that icons across densities provide roughly the same "IconExpectedSize": Ensures that launcher icons, notification icons etc have "IconDuplicates": Finds duplicated icons under different names "IconDuplicatesConfig": Finds icons that have identical bitmaps across various "IconNoDpi": Finds icons that appear in both a -nodpi folder and a dpi folder
L'erreur de la stacktrace de lint mentionnait "checkDipSizes", nous avons une option "IconDipSize". Je vais donc soumettre à nouveau mon projet à lint mais avec le parametre --disable IconDipSize
k@mbp /opt/android-sdk-update-manager/tools $ ./lint --disable IconDipSize ~/workspace/JArriveDeSuite/ Scanning JArriveDeSuite: ................................................................................................................................................................ Scanning JArriveDeSuite (Phase 2): ...... res/layout/wizard.xml:42: Warning: Duplicate id @+id/tvContactNum, defined or included multiple times in layout/wizard.xml: [layout/wizard.xml => layout/wizardfreq.xml defines @+id/tvContactNum, layout/wizard.xml => layout/wizardcontact.xml defines @+id/tvContactNum] [DuplicateIncludedIds] <include ^ res/layout/wizardfreq.xml:11: Defined here, included via layout/wizard.xml => layout/wizardfreq.xml defines @+id/tvContactNum res/layout/wizardcontact.xml:35: Defined here, included via layout/wizard.xml => layout/wizardcontact.xml defines @+id/tvContactNum res/layout/wizard.xml:113: Warning: android:enabled is deprecated: Use state_enabled instead [Deprecated] android:enabled="false" ^ res/drawable-hdpi: Warning: Missing the following drawables in drawable-hdpi: ._iconjarrive.png (found in drawable-mdpi, drawable-xhdpi) [IconDensities] res/drawable-xhdpi: Warning: Missing the following drawables in drawable-xhdpi: ic_launcher.png (found in drawable-hdpi, drawable-mdpi) [IconDensities] res/layout/wizardfreqinterval.xml:36: Warning: [I18N] Hardcoded string "Vous arrivez dans :", should use @string resource [HardcodedText] android:text="Vous arrivez dans :" ^ res/layout/wizardfreqinterval.xml:106: Warning: [I18N] Hardcoded string "Toutes les :", should use @string resource [HardcodedText] android:text="Toutes les :" ^ 0 errors, 6 warnings
Conclusion
L'outil lint est déjà excellent et pertinent, mais pas exempt de petits soucis. L'intégration dans Eclipse est un peu laconique mais je suis confiant sur le devenir de cet outil.Si ça vous interesse, le problème de mon projet était en relation avec ces icônes xhdpi manquantes.
Aucun commentaire:
Enregistrer un commentaire