Sonar anomalie plugin Taglist
De EjnTricks
Révision de 20 avril 2012 à 09:42 par Etienne (discussion | contributions) (Page créée avec « L'utilisation du plugin <code>Taglist</code> permet de générer des rapports en fonction de tag dans le code source, comme les <code>TODO</code> ou <code>FIXME</code>. Lo... »)
L'utilisation du plugin Taglist
permet de générer des rapports en fonction de tag dans le code source, comme les TODO
ou FIXME
. Lors d'une analyse du code, déclenchée par Jenkins par exemple, le message d'erreur peut être visualisé dans la trace d'exécution:
[INFO] [00:36:02.522] Execute decorators... [INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] Fail to decorate 'fr.ejn.tutorial.ws.Parameter' [INFO] ------------------------------------------------------------------------ [INFO] Trace org.sonar.api.utils.SonarException: Fail to decorate 'fr.ejn.tutorial.ws.Parameter' at org.sonar.batch.phases.DecoratorsExecutor.executeDecorator(DecoratorsExecutor.java:84) at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:70) at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:63) at org.sonar.batch.phases.DecoratorsExecutor.decorateResource(DecoratorsExecutor.java:63) at org.sonar.batch.phases.DecoratorsExecutor.execute(DecoratorsExecutor.java:55) at org.sonar.batch.phases.Phases.execute(Phases.java:94) at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:143) at org.sonar.batch.bootstrap.Module.start(Module.java:83) at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:111) at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:101) at org.sonar.batch.bootstrap.Module.start(Module.java:83) at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:102) at org.sonar.batch.bootstrap.Module.start(Module.java:83) at org.sonar.batch.Batch.execute(Batch.java:100) at org.sonar.maven.SonarMojo.executeBatch(SonarMojo.java:152) at org.sonar.maven.SonarMojo.execute(SonarMojo.java:142) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328) at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138) at org.apache.maven.cli.MavenCli.main(MavenCli.java:362) at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315) at org.codehaus.classworlds.Launcher.launch(Launcher.java:255) at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430) at org.codehaus.classworlds.Launcher.main(Launcher.java:375) Caused by: java.lang.NullPointerException at java.util.TreeMap.getEntry(TreeMap.java:324) at java.util.TreeMap.get(TreeMap.java:255) at org.apache.commons.collections.bag.AbstractMapBag.add(AbstractMapBag.java:257) at org.sonar.api.measures.CountDistributionBuilder.add(CountDistributionBuilder.java:65) at org.sonar.api.measures.CountDistributionBuilder.add(CountDistributionBuilder.java:79) at org.sonar.plugins.taglist.ViolationsDecorator.saveFileMeasures(ViolationsDecorator.java:98) at org.sonar.plugins.taglist.ViolationsDecorator.decorate(ViolationsDecorator.java:76) at org.sonar.batch.phases.DecoratorsExecutor.executeDecorator(DecoratorsExecutor.java:79) ... 34 more
Cette erreur et assez ancienne au niveau de Sonar mais peut avoir plusieurs origines. Mais dans le cadre de cet article, l'origine identifiée concerne l'écriture des tag TODO
au sein du code, faisant l'objet du ticket http://jira.codehaus.org/browse/SONARPLUGINS-925.
Au niveau du code source, un tag TODO
a été placé de la façon suivante:
// TODO: To optimize
Tout le problème provient du caractère :
qu'il faut supprimer.
// TODO To optimize