This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
2014_2015:s3:concprogobjet:td:reverse-engineering [2014/11/22 15:57] blay [Métriques : utilisation du plugin Metrics de Eclipse] |
2014_2015:s3:concprogobjet:td:reverse-engineering [2014/11/26 10:50] (current) blay [Métriques : utilisation du plugin Metrics de Eclipse] |
||
---|---|---|---|
Line 45: | Line 45: | ||
- Vous pouvez double-cliquer sur les métriques pour les voir en détail en particulier pour visualiser les valeurs maximales. Les éléments enfants à chaque niveau sont triés par ordre décroissant métrique (maximum ). | - Vous pouvez double-cliquer sur les métriques pour les voir en détail en particulier pour visualiser les valeurs maximales. Les éléments enfants à chaque niveau sont triés par ordre décroissant métrique (maximum ). | ||
- Etudiez les valeurs des métriques obtenues. | - Etudiez les valeurs des métriques obtenues. | ||
- | * Sont-elles dans les limites souhaitées? | + | * Sont-elles dans les limites souhaitées? (voir question 7) |
* Dans quel cas, ne sont-elles pas dans la limite souhaitée? Qu'en pensez-vous? | * Dans quel cas, ne sont-elles pas dans la limite souhaitée? Qu'en pensez-vous? | ||
* Que pensez-vous de la classe //Graphe// : | * Que pensez-vous de la classe //Graphe// : | ||
Line 51: | Line 51: | ||
* Comparer le nombre de lignes à sa complexité //Cyclomatic//. | * Comparer le nombre de lignes à sa complexité //Cyclomatic//. | ||
* Que pensez-vous du nombre de méthodes dans cette classe? Est-ce que cela vous gêne? | * Que pensez-vous du nombre de méthodes dans cette classe? Est-ce que cela vous gêne? | ||
- | - Les valeurs seuils ne sont pour la plupart pas définies. Pour les définir, aller dans le menu ''Preference'' de **Eclipse** puis sous ''Metric'', configurer les valeurs seuils à votre convenance et regarder à nouveau les codes.{{ :2014_2015:s3:concprogobjet:td:metricparametre.png?direct&200 |}} [[http://metrics.sourceforge.net/|(En savoir plus)]] | + | - Les valeurs seuils ne sont pour la plupart pas définies. Pour les définir, aller dans le menu ''Preference'' de **Eclipse** puis sous ''Metric'', configurer les valeurs seuils à votre convenance et regarder à nouveau les codes.{{ :2014_2015:s3:concprogobjet:td:metricparametre.png?direct&200 |}} [[http://metrics.sourceforge.net/|(En savoir plus)]] {{ :2014_2015:s3:concprogobjet:td:metricsresults.png?direct&200 |}} |
- | - Avez-vous bien compris ce que représentent les différents métriques? | + | - Regardez vos codes avec cet outil. |
- | {{ :2014_2015:s3:concprogobjet:td:metricsresults.png?direct&200 |}} | + | |
Line 101: | Line 99: | ||
Notre objectif dans cette partie est de comprendre | Notre objectif dans cette partie est de comprendre | ||
- | - les notions de normes de codage | + | * les notions de normes de codage |
- | - comment préciser vos propres règles de nommage. | + | * comment préciser vos propres règles de nommage. |
<html> | <html> | ||
Line 112: | Line 110: | ||
</html> | </html> | ||
- | 1- Activer CheckStyle dans le projet | + | **Questions** |
- | {{ :2014_2015:s3:concprogobjet:td:checkstyleactiver.png?direct&300 |}} | + | |
- | 2- Afficher la vue "Checkstyle Violation" | + | - Activer CheckStyle dans le projet {{ :2014_2015:s3:concprogobjet:td:checkstyleactiver.png?direct&300 |}} |
- | {{ :2014_2015:s3:concprogobjet:td:checkstyleview.png?direct&300 |}} | + | - Afficher la vue "Checkstyle Violation" et étudier quelques unes des "violations" relevées par exemple les import *, les variables publiques, le nom des variables, ... {{ :2014_2015:s3:concprogobjet:td:checkstyleview.png?direct&300 |}} |
+ | - Et dans vos codes quelles erreurs de style détectez-vous? | ||
+ | - Configurer les règles pour votre projet | ||
+ | - Dans Eclipse -> preference -> CheckStyle | ||
+ | - Vous visualisez alors les règles par défaut de tous les projets. Prenez le temps de les regarder et d'en comprendre certaines. {{ :2014_2015:s3:concprogobjet:td:checkstyleconfig.png?direct&300 |}} | ||
+ | - Nous allons définir nos propres règles, donc nous commençons par définir votre propre configuration : sélection du projet -> properties, puis checkstyle {{ :2014_2015:s3:concprogobjet:td:checkstyleconfigprojet.png?direct&300 |}} | ||
+ | - Sélectionner Local Check Configuration -> New {{ :2014_2015:s3:concprogobjet:td:checkstylenewconfig.png?direct&300 |}} | ||
+ | - Sélectionner la configuration puis faire configure | ||
+ | - Visualisez alors les règles rangées par catégorie. | ||
+ | - Choisissez à présent les règles que vous voulez vérifier dans votre projet. | ||
+ | * la duplication de code | ||
+ | * le nommage des variables | ||
+ | * le nommage des packages, mais vous le modifiez pour forcer le nom des packages à se terminer par "pk"par exemple. {{ :2014_2015:s3:concprogobjet:td:checkstyleconfpackage.png?direct&300 |}} | ||
+ | - Effacer les violations précédentes (projet -> checkstyle -> clear checkstyle violation. {{ :2014_2015:s3:concprogobjet:td:checkstyleclearviolation.png?direct&300 |}} Si cela ne fonctionne pas, désélectionner "use simple configuration" puis ''Add'' {{ :2014_2015:s3:concprogobjet:td:checkstylecreerconfiguration.png?direct&300 |}} | ||
+ | - Visualiser les erreurs sur un graphique | ||
+ | - Sélectionner juste à côté de la vue Checkstyle la visualisation graphique (les 4 couleurs) {{ :2014_2015:s3:concprogobjet:td:checkstyleboutongraphique.png?direct&300 |}} {{ :2014_2015:s3:concprogobjet:td:checkstylegraphiquevue.png?direct&300 |}} | ||
+ | - Prenez le temps d'étudier vos codes de TD, projet méthodologie ou tutoré. | ||
- | 3- Configurer les règles pour votre projet | + | <html> |
- | + | <!-- | |
- | a- Dans Eclipse -> preference -> CheckStyle | + | **Questions sur vos propres codes** |
- | + | - Consider the coding conventions for line length in the Sun document. Browse your application source code and determine if this coding convention has been consistently followed. | |
- | Vous visualisez alors les règles par défaut de tous les projets. | + | |
- | + | ||
- | {{ :2014_2015:s3:concprogobjet:td:checkstyleconfig.png?direct&300 |}} | + | |
- | + | ||
- | b- Pour votre projet, il est utile de définir votre propre configuration : sélection du projet -> properties, puis checkstyle | + | |
- | + | ||
- | {{ :2014_2015:s3:concprogobjet:td:checkstyleconfigprojet.png?direct&300 |}} | + | |
- | + | ||
- | c- Sélectionner Local Check Configuration -> New | + | |
- | + | ||
- | {{ :2014_2015:s3:concprogobjet:td:checkstylenewconfig.png?direct&300 |}} | + | |
- | + | ||
- | d- sélectionner la configuration puis faire configure | + | |
- | + | ||
- | Vous choisissez à présent les règles que vous voulez vérifier dans votre projet. | + | |
- | * la duplication de code | + | |
- | * le nommage des variables | + | |
- | * le nommage des packages, mais vous le modifiez pour forcer le nom des packages à se terminer par "pk". | + | |
- | {{ :2014_2015:s3:concprogobjet:td:checkstyleconfpackage.png?direct&300 |}} | + | |
- | + | ||
- | e- effacer les violations précédentes (projet -> checkstyle -> clear checkstyle violation | + | |
- | {{ :2014_2015:s3:concprogobjet:td:checkstyleclearviolation.png?direct&300 |}} | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | si cela ne fonctionne pas, désélectionner "use simple configuration" puis ''Add'' | + | |
- | {{ :2014_2015:s3:concprogobjet:td:checkstylecreerconfiguration.png?direct&300 |}} | + | |
- | + | ||
- | Vous visualisez les règles rangées par catégorie. | + | |
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | + | ||
- | X- Visualiser les erreurs sur un graphique | + | |
- | + | ||
- | Sélectionner juste à côté de la vue Checkstyle la visualisation graphique (les 4 couleurs) | + | |
- | {{ :2014_2015:s3:concprogobjet:td:checkstyleboutongraphique.png?direct&300 |}} | + | |
- | + | ||
- | {{ :2014_2015:s3:concprogobjet:td:checkstylegraphiquevue.png?direct&300 |}} | + | |
- | + | ||
- | + | ||
- | Leur donner les conventions Sun | + | |
- | + | ||
- | Quand vous travaillez à plusieurs sur des codes vous pouvez être amenés à définir vos propres règles de nommage par exemple, tous les noms de packages se terminent par pk, ... | + | |
- | + | ||
- | questions: | + | |
- | + | ||
- | * Consider the coding conventions for line length in the Sun document. Browse your application source code and determine if this coding convention has been consistently followed. | + | |
* Consider the coding conventions for line wrapping in the Sun document. Browse your application source code and determine if this coding convention has been consistently followed. | * Consider the coding conventions for line wrapping in the Sun document. Browse your application source code and determine if this coding convention has been consistently followed. | ||
* Consider the coding conventions for various types of | * Consider the coding conventions for various types of | ||
Line 201: | Line 159: | ||
assessment of the source code base by visual | assessment of the source code base by visual | ||
examination. | examination. | ||
- | |||
Attention c'est des recommandations seulement. Par exemple, dans les tests certaines valeurs ne doivent évidemment pas être définies comme des constantes. | Attention c'est des recommandations seulement. Par exemple, dans les tests certaines valeurs ne doivent évidemment pas être définies comme des constantes. | ||
+ | !--> | ||
+ | </html> | ||
+ | |||
===== PMD ===== | ===== PMD ===== | ||
Line 214: | Line 174: | ||
* //"Il couvre un large spectre, en termes de contrôle (de la convention de nommage au calcul de complexité cyclomatique) et il fournit, en standard, près de 300 règles « prêtes à l'emploi » "// | * //"Il couvre un large spectre, en termes de contrôle (de la convention de nommage au calcul de complexité cyclomatique) et il fournit, en standard, près de 300 règles « prêtes à l'emploi » "// | ||
En savoir plus sur le choix : (cf. [[http://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-105/Verifier-votre-code-Java-avec-PMD]]) | En savoir plus sur le choix : (cf. [[http://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-105/Verifier-votre-code-Java-avec-PMD]]) | ||
+ | |||
==== Exécuter PMD ==== | ==== Exécuter PMD ==== | ||
+ | **Questions :** | ||
+ | - Sélectionner le projet -> propriétés -> PMD -> activer PMD | ||
+ | - Clique droit sur le projet puis PMD vérifier le projet {{ :2014_2015:s3:concprogobjet:td:pmd-open.png?direct&300 |}} | ||
+ | - Pour mieux voir les erreurs, ouvrir une nouvelle vue PMD {{ :2014_2015:s3:concprogobjet:td:pmdvue.png?direct&300 |}} | ||
+ | - Etudier les erreurs relevées Pour comprendre les erreurs pensez à cliquer sur l'erreur et visualiser la règle {{ :2014_2015:s3:concprogobjet:td:pmdvoirregle.png?direct&300 |}} | ||
+ | - Rechercher les codes dupliqués et étudier les duplications... et sur vos propres codes. {{ :2014_2015:s3:concprogobjet:td:codesdupliques.png?direct&300 |}} | ||
+ | - Générer le rapport PMD {{ :2014_2015:s3:concprogobjet:td:pmdgenererrapport.png?direct&300 |}} | ||
+ | - Etudier les erreurs relevées dans vos propres codes. | ||
+ | |||
+ | <html> | ||
+ | <!-- | ||
1- Fabriquons un exemple pour être sûr d'avoir des erreurs à analyser ((Cette partie s'appuie sur le tutoriel suivant http://www.javatips.net/blog/2012/06/pmd-in-eclipse-tutorial)) : | 1- Fabriquons un exemple pour être sûr d'avoir des erreurs à analyser ((Cette partie s'appuie sur le tutoriel suivant http://www.javatips.net/blog/2012/06/pmd-in-eclipse-tutorial)) : | ||
Line 239: | Line 211: | ||
} | } | ||
</code> | </code> | ||
- | + | !--> | |
- | 2- Clique droit sur le projet puis PMD vérifier le projet | + | </html> |
- | + | ||
- | {{ :2014_2015:s3:concprogobjet:td:pmd-open.png?direct&300 |}} | + | |
- | + | ||
- | 3- Pour mieux voir les erreurs, ouvrir une nouvelle vue PMD | + | |
- | {{ :2014_2015:s3:concprogobjet:td:pmdvue.png?direct&300 |}} | + | |
- | + | ||
- | 4- Générer le rapport PMD | + | |
- | {{ :2014_2015:s3:concprogobjet:td:pmdgenererrapport.png?direct&300 |}} | + | |
- | + | ||
- | 5- Etudier les erreurs relevées dans la nouvelle classe, dans les codes existants et dans vos propres codes. | + | |
- | + | ||
- | Pour comprendre les erreurs pensez à cliquer sur l'erreur et visualiser la règle | + | |
- | + | ||
- | {{ :2014_2015:s3:concprogobjet:td:pmdvoirregle.png?direct&300 |}} | + | |
==== Configurer PMD ==== | ==== Configurer PMD ==== | ||
1- Sélectionner eclipse -> Preferences -> PMD | 1- Sélectionner eclipse -> Preferences -> PMD | ||
Line 263: | Line 221: | ||
{{ :2014_2015:s3:concprogobjet:td:pmdregles.png?direct&300 |}} | {{ :2014_2015:s3:concprogobjet:td:pmdregles.png?direct&300 |}} | ||
+ | ==== Allons plus loin, comment PMD fonctionne ? ==== | ||
+ | |||
+ | * http://pmd.sourceforge.net/pmd-5.1.2/ | ||
+ | * http://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-105/Verifier-votre-code-Java-avec-PMD | ||
+ | * Quelles règles? http://pmd.sourceforge.net/pmd-5.1.2/rules/index.html#Basic | ||
+ | <html> | ||
+ | <!-- | ||
==== Découverte de l'outil sur le code de JUNIT ==== | ==== Découverte de l'outil sur le code de JUNIT ==== | ||
Line 275: | Line 240: | ||
* La classe Theorie.java est notée comme une GOD Class ? Pourquoi ? (trop de méthodes) | * La classe Theorie.java est notée comme une GOD Class ? Pourquoi ? (trop de méthodes) | ||
{{ :2014_2015:s3:concprogobjet:td:godclasspmd.png?direct&200 |}} | {{ :2014_2015:s3:concprogobjet:td:godclasspmd.png?direct&200 |}} | ||
- | ==== Utilisation personnelle de PMD ==== | ||
- | Appliquer PMD sur vos propres codes. | ||
- | ==== Allons plus loin, comment PMD fonctionne ? ==== | ||
- | * http://pmd.sourceforge.net/pmd-5.1.2/ | ||
- | * http://connect.ed-diamond.com/GNU-Linux-Magazine/GLMF-105/Verifier-votre-code-Java-avec-PMD | ||
- | * Quelles règles? http://pmd.sourceforge.net/pmd-5.1.2/rules/index.html#Basic | ||
===== Reverse Engineering ===== | ===== Reverse Engineering ===== | ||
Line 298: | Line 257: | ||
* Cette visualisation doit se faire sur une sous-partie. Sélectionner quelques classes qu'il vous semble intéressant de visualiser. | * Cette visualisation doit se faire sur une sous-partie. Sélectionner quelques classes qu'il vous semble intéressant de visualiser. | ||
- Generate sequence or collaboration diagrams | - Generate sequence or collaboration diagrams | ||
+ | |||
+ | |||
Line 331: | Line 292: | ||
Mais on a quand même 14,9Mo... | Mais on a quand même 14,9Mo... | ||
+ | !--> | ||
+ | </html> | ||