User Tools

Site Tools


2014_2015:s3:concprogobjet:td:reverse-engineering

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
2014_2015:s3:concprogobjet:td:reverse-engineering [2014/11/02 08:18]
blay [Conventions de codage et de style : Utilisation du plugin CheckStyle]
2014_2015:s3:concprogobjet:td:reverse-engineering [2014/11/26 10:50] (current)
blay [Métriques : utilisation du plugin Metrics de Eclipse]
Line 13: Line 13:
 ===== Parcourir les codes : premier aperçu ===== ===== Parcourir les codes : premier aperçu =====
  
-Une fois les codes téléchargés et placés dans Eclipse, nous allons ​juste utilisé ​pour l'​instant les outils standard pour parcourir ces codes.+Une fois les codes téléchargés et placés dans Eclipse, nous allons ​utiliser ​pour l'​instant les outils standard pour parcourir ces codes.
  
   - Placez vous dans une **perspective** "​java":​ //Window -> open perspective -> Java ...//   - Placez vous dans une **perspective** "​java":​ //Window -> open perspective -> Java ...//
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? Est-ce une méthode publique? 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// :
           * Nombre de lignes de code des méthodes? Quelle est la méthode qui a le plus de lignes de codes? Qu'en pensez-vous?​           * Nombre de lignes de code des méthodes? Quelle est la méthode qui a le plus de lignes de codes? Qu'en pensez-vous?​
           * 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 |}} +
- +
-bPour 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>​
- +!--> 
-2Clique 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>​
  
  
2014_2015/s3/concprogobjet/td/reverse-engineering.1414912701.txt.gz · Last modified: 2014/11/02 08:18 by blay