Commit 734c37be authored by Gerson Sunyé's avatar Gerson Sunyé
Browse files

Project proposal, initial commit

parent 577eea37
= Don't Shoot the Messenger
L'objectif de ce projet est de simuler le fonctionnement de https://pmd.github.io[PMD], un analyseur statique de code source Java.
Pour ce faire, nous allons utiliser les outils de l'ingénierie des modèles:
. Modisco fera l'analyse syntaxique du code source Java pour créer une instance d'un modèle EMF représentant l'arbre syntaxique du code.
. ATL utilisera ce modèle pour appliquer un ensemble de règles que vous allez développer.
Ces règles vont calculer des métriques et les enregistrer dans un modèle https://www.omg.org/spec/SMM/[SMM] (Structured Metrics Metamodel).
Votre rôle sera donc d'écrire des règles ATL capables de calculer des métriques d'un code source Java.
== Les règles
PMD propose 304 règles spécifiques à Java.
Chaque règle correspond à un _ticket_ ouvert sur le projet GitLab et accessibles dans la rubrique https://gitlab.univ-nantes.fr/naomod/mde/projet-2019/issues[Tickets].
Les tickets sont classés en 4 niveaux de difficultés:
Simple:: désigne une règle très simple, ne demandant qu'une seule navigation.
Par exemple, trouver les appels à `System.out.println()`
Average:: il s'agit d'une règle nécessitant soit une navigation complexe, soit deux navigations simples.
Par exemple, utiliser la classe `ArrayList` à la place de `Vector`.
Hard:: c'est une règle difficile, qui demande plusieurs navigations complexes.
Par exemple, l'absence de l'annotation `@Override` lorsqu'une méthode redéfinie une autre.
Challenging:: désigne un vrai défi en termes de complexité.
Elle nécessite plusieurs navigations complexes.
Par exemple, calculer la complexité cyclomatique d'une méthode.
== Travail à Réaliser
Chaque étudiant devra résoudre seul un ou plusieurs tickets, de manière à réaliser l'effort équivalent à *8* points, où:
* un ticket _Simple_ équivaut à 1 points;
* un ticket _Average_ à 2 points;
* un ticket _Hard_ à 4 points; et enfin,
* un ticket _Challenging_ équivaut à 8 points.
Pour résoudre un ticket, vous devez faire une demande de fusion (_merge request_) sur GitLab.
Chaque demande doit contenir au moins une règle ATL claire et bien commentée, ainsi qu'un exemple permettant de vérifier que la règle fonctionne correctement.
*Attention*, les demandes de fusion peuvent être refusées si l'on considère qu'elles ne sont pas complètes.
== Réévaluation des tickets
Comme niveau de difficulté de chaque ticket est estimé, il est possible que la difficulté d'une règle ait été mal évaluée.
Si après avoir écrit une règle, vous pensez que sa difficulté a été sur or sous-estimée, demandez à changer l'étiquette du ticket.
\ No newline at end of file
# Source Code Analyzer
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment