Bonjour,
j'ai créé de nouvelles règles pmd, mais je ne sais pas comment je peux les utiliser avec sonar. Mes règles sont contenu dans un jar.
Est ce que quelqu'un aurait la solution?
merci
Bonjour,
j'ai créé de nouvelles règles pmd, mais je ne sais pas comment je peux les utiliser avec sonar. Mes règles sont contenu dans un jar.
Est ce que quelqu'un aurait la solution?
merci
Bonjour,
Il te faut faire comme cela :
Connecte toi sur Sonar en tant qu'administrateur.
En haut à droite, "Configuration", puis "Create profile".
Là, tu définis un nom pour le nouveau profile, puis tu uploades les configurations PMD et checkstyle sous forme de fichier XML.
Ensuite, soit tu définis ce nouveau profil comme celui par défaut, soit tu cliques sur le lien "0 projets", et tu ajoutes le ou les projets qui utiliseront ce nouveau profile de qualité.
Nous sommes tous semblables, alors acceptons nos différences !
--------------------------------------------------------------
Liens : Blog | Page DVP | Twitter
Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
Critiques : Apache Maven
ok mais ca c'est pour charger un fichier xml définissant les règles.
J'ai bien mon fichier xml définissant mes nouvelles règles; Cependant le code java des nouvelles regles est dans un jar et je ne sais pas comment ajouter ce jar dans sonar.
Si je charge juste mon fichier xml, les nouvelles regles seront appeler mais pas trouvé, vu que le jar cible n'est pas la.
Ah ok, tu as écrit le code Java de nouvelles règles.
Je ne l'ai jamais fait, mais à priori, tu dois mettre les fichiers dans le répertoire extensions/rules/pmd et extensions/rules/checkstyle du répetoire d'installation de Sonar.
Une page wiki explique cela.
Nous sommes tous semblables, alors acceptons nos différences !
--------------------------------------------------------------
Liens : Blog | Page DVP | Twitter
Articles : Hudson | Sonar | Outils de builds Java Maven 3 | Play! 1 | TeamCity| CitConf 2009
Critiques : Apache Maven
je ne comprends pas, j'ai bien suivi l'exemple.
Je tente de d'inserrer mes regles checkstyle.
J'ai placé le jar de mes nouvelles regles dans extensions/rules/checkstyle et j'ai egalement mis dans ce repertoire un fichier xml decrivant mes regles.
Mais il ne se passe rien.
Le projet associé n'est pas checké.Et si j'enleve le jar du repertoire, ca marche quand meme.
Quelqu'un aurait une idée car la je suis paumé.
merci
Salut captu,
Parles-tu de règles checkstyle ou de règles PMD ?
Une fois le serveur redémarré, vois-tu la définition de tes règles dans le moteur de recherche du profil ?
Simon
alors en fait j'ai des regles PMD ET Checkstyle, mais pour le moment je vais essayer de faire marcher les regles checkstyle.
Oui une fois le profil créé je vois bien les regles et mon projet est bien associé a ce profil (profil par default) mais le projet n'est pas checké et comme je le disais si j'enleve le jar sa marche toujours.
Je vais decrire precisément tout ce que j'ai:
fichier xml checkstyle associé au profil:
arborescence du jar:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <module name="Checker"> <!-- longueur max du fichier --> <module name="FileLength" /> <module name="TreeWalker"> <!-- Dans un try-catch, le catch doit etre sur la meme ligne que l'accolade fermante du try --> <!-- dans les if-else, le else doit etre sur la meme ligne que l'accolade fermante du if --> <module name="rules.ElseCatchPosition"> <property name="option" value="eol"/> </module> <!-- Un espace devant une accolade ouvrante --> <module name="rules.LeftCurlyWhiteSpaceBefore"> </module> <module name="FileContentsHolder"/> </module> <module name="SuppressionCommentFilter"/> </module>
fichier xml "index" dans extensions/rules/checkstyle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 my_checkstyle.jar |_rules (package) |_ElseCatchPosition.class/java |_LeftCurlyWhiteSpaceBefore
il y a egalement quelque chose que je ne comprends pas, ma deuxieme regle n'a pas besoin de parametre, neanmoins, sonar ne fonctionne pas si je ne mets pas la balise <param> (donc je l'ai mise mais avec n'importe quoi dedans )
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 <rules> <rule key="rules.ElseCatchPosition"> <!-- Path to your class file --> <name>Else Catch Position</name> <configKey>Checker/TreeWalker/rules.ElseCatchPosition</configKey> <category name="Maintainability"/> <description>Le else et le catch doivent etre sur le meme ligne que le } du if et du try</description> <param key="option" type="s"> <description>l_option, nl ou eol</description> </param> </rule> <rule key="rules.LeftCurlyWhiteSpaceBefore"> <!-- Path to your class file --> <name>Left Curly White Space Before</name> <configKey>Checker/TreeWalker/rules.LeftCurlyWhiteSpaceBefore</configKey> <category name="Maintainability"/> <description>Pas d_espace devant { </description> <param key="option" type="s"> <description></description> </param> </rule> </rules>
en esperant que vous pourrez m'aider
La définition XML et ton JAR m'ont l'air d'être OK. Par contre je ne comprend pas ce que tu appelles le "fichier xml checkstyle associé au profil". Je n'ai pas l'impression que ce soit un export XML depuis l'interface Sonar. L'utilises-tu dans ton pom ?
De + le profil par défaut ("Sonar way") ne peut pas être modifié. Tu ne peux activer tes 2 règles que sur un nouveau profil.
Pourtant en cliquant sur set as default, mon profil est devenu profil par default a la place de "sonar way".
"fichier xml checkstyle associé au profil" est les fichier xml checkstyle que j'ai chargé en creant mon profil.
voici le pom de mon projet:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Pentalog</groupId> <artifactId>Recherche_SVN_SONAR</artifactId> <name>Test_Sonar</name> <version>1.0</version> <build> <sourceDirectory>./src</sourceDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> <properties> <sonar.light>true</sonar.light> </properties> </project>
OK je comprend mieux. Merci pour ces précisions.
Peux-tu attacher le résultat de l'export XML depuis la page "Quality profiles", et également le fichier target/sonar/checkstyle.xml après analyse du projet ?
Merci
ok, voici le target/sonar/checkstyle.xml (en piece jointe)
(cependant en realité j'ai plus de deux regles )
et l'export de mon profil (c'est en csv, j'ai du le mettre dans un rar car l'export ne marchait pas)
et comment déduis-tu que tes règles ne sont pas exécutées ? Tu t'attends à avoir des erreurs sur ton projet ?
De mémoire Checkstyle devrait planter si il ne trouve pas une des règles définies. Est-ce le cas ? Le batch maven génère-il une erreur ? Si oui peux-tu envoyer le log ?
Autre requête, peux-tu attacher le fichier target/sonar/sonar-pom.xml ?
Patience, nous allons y arriver à force
en effet j'ai volontairement créé des erreurs dans mon projet qui ne sont pas détectées.
je ne pense pas que checkstyle plante car sonar se demarre sans probleme mais en meme temps je ne sais pas ou regarder pour verifier.
Pour le batch maven, je comprend pas. Mis a part avoir mavenisé mon proj, je ne connait pas bien maven
voici en piece jointe le fichier "target/sonar/sonar-pom.xml"
je te remercie de ton aide
c'est bizarre chacun de mes nouvelles regles est associé pour sonar à la fois pour checkstyle, pmd et findbugs, comment est ce possible?
Question idiote, mais as-tu bien copié my_checkstyle.jar dans extensions/rules/checkstyle ?
Si tu n'executes pas sonar en mode standalone classique mais en déployant le WAR, n'oublies pas qu'il faut ré-éxecuter war/build-war.sh
oui new_checkstyle.jar est bien extensions/rules/checkstyle, tout comme mon fichier xml index de description des regles.
Pour executer sonar, j'utilise le fichier StartSonar.bat, je ne cree pas de war
Je n'y arrive toujours pas.
Tu n'as pas d'autre idees?
Je desespere
Tu peux envoyer les logs de demarrage du serveur STP ?
biensur; voici le log de démarrage du serveur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 STATUS | wrapper | 2009/12/02 11:08:10 | --> Wrapper Started as Console STATUS | wrapper | 2009/12/02 11:08:10 | Java Service Wrapper Community Edition 3.3.0 STATUS | wrapper | 2009/12/02 11:08:10 | Copyright (C) 1999-2008 Tanuki Software, Inc. All Rights Reserved. STATUS | wrapper | 2009/12/02 11:08:10 | http://wrapper.tanukisoftware.org STATUS | wrapper | 2009/12/02 11:08:10 | STATUS | wrapper | 2009/12/02 11:08:10 | Launching a JVM... INFO | jvm 1 | 2009/12/02 11:08:11 | WrapperManager: Initializing... 2009.12.02 11:08:13 INFO org.sonar.INFO JDBC datasource bound to JNDI, name=jdbc/sonar 2009.12.02 11:08:15 INFO org.sonar.INFO publish 8 GWT extensions to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.resourceviewer.GwtResourceViewer to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.defaultsourceviewer.GwtDefaultSourceViewer to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.coverageviewer.CoverageViewer to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.violationsviewer.ViolationsViewer to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.duplicationsviewer.DuplicationsViewer to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.testdetailsviewer.TestsViewer to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.clouds.GwtClouds to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:15 INFO org.sonar.INFO publish org.sonar.plugins.core.hotspots.GwtHotspots to C:\sonar-1.10\war\sonar-web\deploy\gwt 2009.12.02 11:08:16 INFO org.sonar.INFO loading metrics... 2009.12.02 11:08:16 INFO org.sonar.INFO loading findbugs rules... 2009.12.02 11:08:19 INFO org.sonar.INFO loading findbugs extensions... 2009.12.02 11:08:19 INFO org.sonar.INFO loading checkstyle rules... 2009.12.02 11:08:20 INFO org.sonar.INFO loading checkstyle extensions... 2009.12.02 11:08:20 INFO org.sonar.INFO loading pmd rules... 2009.12.02 11:08:22 INFO org.sonar.INFO loading pmd extensions... 2009.12.02 11:08:24 INFO org.sonar.INFO loading findbugs profiles... 2009.12.02 11:08:24 INFO org.sonar.INFO loading the profile Sonar way with Findbugs/java from findbugs 2009.12.02 11:08:30 INFO org.sonar.INFO loading checkstyle profiles... 2009.12.02 11:08:30 INFO org.sonar.INFO loading the profile Sonar way/java from checkstyle 2009.12.02 11:08:31 INFO org.sonar.INFO loading the profile Sonar way with Findbugs/java from checkstyle 2009.12.02 11:08:32 INFO org.sonar.INFO loading the profile Sun checks/java from checkstyle 2009.12.02 11:08:34 INFO org.sonar.INFO loading pmd profiles... 2009.12.02 11:08:34 INFO org.sonar.INFO loading the profile Sonar way/java from pmd 2009.12.02 11:08:37 INFO org.sonar.INFO loading the profile Sonar way with Findbugs/java from pmd 2009.12.02 11:08:40 INFO org.sonar.INFO loading the profile Sun checks/java from pmd 2009.12.02 11:08:40 INFO org.sonar.INFO activating java default profile... INFO | jvm 1 | 2009/12/02 11:08:53 | Sonar listens http://0.0.0.0:9000/
C'est bon j'ai reussi (non sans mal).
Je poste la solution, peut certains seront intressé.
Alors, la methode pour inserrer les nouvelles regles etait bonne mais pour une raison inconnu, certaine methodes dans mes regles custom ne fonctionnaient pas, comme par exemple la classe "getPreviousSibling" de la classe Check.
J'ai repris mes methodes une par une et j'ai modifié celles qui devaient l'etre.
Voila
merci de m'avoir aider simon.brandhof
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager