SciTools Understand A Source Code Analysis and Metrics Tool

Slides:



Advertisements
Présentations similaires
Hiver 2010JGA Beaulieu GEF 243B Programmation informatique appliquée Structure de base des programmes en C.
Advertisements

Rappels C.
Formation universitaire à .NET: Introduction à C#
TOUQUET Arnaud ▪ GI05 BLONDEEL Igor ▪ GM05
Revenir aux basiques !. 1 Revenir aux basiques Processus Nécessité daméliorer la Maîtrise les Offres et Projets: lanalyse des causes racines montre un.
CONTINUOUS TESTING Hakima Zidouri Informatique Réseau 3
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T PhpMyGI une interface générique mysql Interface générique ? Pourquoi une interface.
C.
Outils de développements
Objectifs Présentation et utilisation du langage PERL
Choisissez selon vos goûts et vos couleurs…WordArt.
LICENCE MIAGE Introduction Programmation Orientée Objet JAVA philippe
Cours Visual Basic pour Application
Prise en main rapide... Ou comment commencer avec RevisAudit ?
Firebug Dévermineur Debugger.
Annuler les corrections automatiques Annuler les corrections automatiques « Régler » les CSS « Régler » les CSS Définir le site et utiliser une technologie.
Introduction à Qt et Qt Creator
14/03/2011 United Nations Environment Programme World Conservation Monitoring Centre CCPAWA Knowledge management: Data portal and mapping tool Gestion.
Mars 2013 Grégory Petit
Développement Rapide dApplications Web avec.NET « Mon premier site »
Programme et Langage C++
Bibliothèque J.N. Desmarais Comment exporter dans RefWorks septembre 2008.
Faculté I&C, Claude Petitpierre, André Maurer 1 JavaCC Java compilers compiler (version générant du Javascript)
Introduction au langage PHP Réfs : Chap 3 p 49. Présentation PHP (Hypertext PreProcessor) est un langage de développement Web créé en 1994 par Rasmus.
Microsoft dot Net Extrait du cours. La programmation fenêtrée facile. Une approche objet. Philippe Garraud: Formateur indépendant.
Le langage Javascript pour le web
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
IFT 6800 Atelier en Technologies d’information
Web dynamique PhP + MySQL AYARI Mejdi 2006
PhP-MySQL Pagora 2012/2013 CTD 1 - Presentation de moi ^^
Chapitre 9 Les sous-programmes.
Document élaboré à Centrale Paris par Pascal Morenton LES TECHNOLOGIES DU WEB 1. LES PHASES D UN DEPLOIEMENT DE RESEAUX 2. LE LANGAGE HTML 3. LE LANGAGE.
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
La librairie assert.h.
Soutenance de Projet Plateforme de Stages
Développement Web Open Source haXe et les outils « open source » Première partie.
PHP & My SQL.
2.1 - Historique Chapitre 2 : Introduction au langage C++
Guillaume TORRENTE Marc BOUISSOU Recherche & Développement
JavaScript Nécessaire Web.
La notion de type revisitée en POO
KRIKORIAN Pierre HILMI Brahim
Elabore par BELKADHI ABIR BEN HASSEN SALMA CHEBBI MARWA
0 Objectifs de la session n°1  Revenir sur toutes les bases théoriques nécessaires pour devenir un développeur Web,  Découvrir l’ensemble des langages.
Programmation événementielle
Créer des packages.
Introduction à Visual Studio C++ (VC++)
 Syntaxe du langage PHP
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
PHP 6° PARTIE : LES SESSIONS 1.Introduction 2.Identificateur de session 3.Variables de session 4.Client / Serveur 5.Principe 6.Ouverture de session 7.Enregistrement.
Module : Pages Web Dynamiques (Production Électronique Avancée)
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Gradle permet d'écrire des tâches de constructions dans un fichier de construction en utilisant le langage Groovy Il est possible.
SIAD Tableaux de bord de gestion MR / YJ Tableaux de bords l Un exemple d ’interface réussi? l Digital Dashboards.
 Formulaires HTML : traiter les entrées utilisateur
Initiation au JavaScript
Sites Web interactifs 2010 / 2011 / S1 Bernhard Rieder.
IFT313 – Introduction aux langages formels Eric Beaudry Département d’informatique Université de Sherbrooke Laboratoire sur JFLEX Été 2010.
Master 1 SIGLIS Java Lecteur Stéphane Tallard Chapitre 2 – Java Premiers pas Master 1 SIGLIS1 Java Lecteur - Chapitre 2 - Java Premiers Pas.
Publication Flash sur Internet et Transfert avec Dreamweaver COM3562 Communication Multimédia MARS 2011.
Langage de programmation
CPI/BTS 2 Programmation Web Fonctions & Includes Prog Web CPI/BTS2 – M. Dravet – 02/11/2003 Dernière modification: 02/11/2003.
Ahmed Sfayhi, Houari Sahraoui
Soutenance de stage Projet principal :
Séminaire de rentrée cours de programmation web & Wordpress
Master 1 SIGLIS Java Lecteur Stéphane Tallard Correction du TD Chapitre 3.
Les calques Les Template (modèles) Les Comportements Les scénarios Les formulaires Les CSS Le serveur Web de l’UTC Présentation.
PRESENTATION FLASH 2 MAURIN Marion BERETTI Vincent.
APP-TSWD Apprentissage Par Problèmes Techniques des Sites Web Dynamiques Licence Professionnelle FNEPI Valérie Bellynck, Benjamin Brichet-Billet, Mazen.
Informatique 2A Langage C 2 è séance. Objectifs de la séance 2 Début de la modularité avec les fonctions Création d’une première bibliothèque.
Transcription de la présentation:

SciTools Understand A Source Code Analysis and Metrics Tool Philippe CHARMAN charman@fr.ibm.com http://users.polytech.unice.fr/~charman/ Last update: 04-10-2013

Prise en mains de l’outil Understand de SciTools Understand outil d’analyse de source code: Calcul des métriques qualité Vérification des règles de programmation usuelles Très nombreux langages supportés: Java, C/C++, Ada, Pascal, Cobol, Fortran, Python, PHP, Javascript, etc.

Prise en mains de l’outil Understand de SciTools Installer Understand 3.1 à partir de: Understand-3.1.658-Windows-32bit.exe Understand-3.1.658-Linux-32bit.tgz Licence d’évaluation valide pendant 15 jours Web site: http://www.scitools.com/

Analyse d’un projet C++ Ouvrir le projet fastgrep: Help > Example Projects > fastgrep Les sources sont dans: C:\Program Files\SciTools3.0\sample\fastgrep

Analyse d’un projet C++ Regardez comment est configuré le projet: Project > Configure Projet Configuration liée au code source: Langages: C/C++ Files: liste des fichiers du projet C++: compilateur, etc. Visual Studio Includes: fichiers d’include hors ceux du compilateur Macros: Configuration liée à d’autres éléments: File Types: association extension <-> langage File Options: divers fichiers Scheduled Activities: programmation des analyses Metrics: exportation des metriques en CSV Reports: generation rapports HTML ou texte

Afficher les métriques de base Metrics > Metrics Summary

Afficher les métriques de base Lines: nombre de toutes les lignes Blank Lines: nombre de lignes vides Comment Lines: nombre de lignes de commentaires Code lines: nombre de lignes contenant du code source Inactive Lines: lignes ignorées par le préprocesseur, ie dans le ne faisant pas partie des #if ou #ifdef Pourquoi n’a-t-on pas forcément: Comment Lines + Blank Lines + Code Lines + Inactives Lines = Total Lines ?

Analyse d’un projet C++ Projects -> Project Overview Charts

Analyse d’un projet C++ CodeCheck > Open CodeCheck Files: Select All Files Checks: select All Checks Click on Analyse Different views of results: Results by File Results by Check Result Locator Result Treemap

Configuration des règles Parametrez certaines règles: Magic numbers -> exceptions Etc. Puis relancer l’analyse

Analyse d’un projet C++ Bugs potentiels: Test equality for floating point Virtual Function Call In Constructor/Destructor Switch Has Default etc.

Analyse d’un projet C++ Code inutilisé Unused Functions Unused Local Variables Unused Static Globals

Analyse d’un projet C++ Pratiques recommandées: Functions Too Long Overly Comples Functions Variables should be commented Do not use #define to specify types Use Const whenever possible Definitions in Header Files Scope Hiding Inline Functions have more than X LOC Etc.

Analyse d’un projet Java Ouvrir le projet getopt Help -> Example Projects -> getopt Les sources sont dans: C:\Program Files\SciTools\sample\fastgrep

Analyse d’un projet Java Regardez comment est configuré le projet: Project > Configure Projet Configuration liée au code source: Langages: Java Files: liste des fichiers du projet Visual Studio: pour spécifier un projet Visual Studio existant Java: compilateur, etc. Class path: définir le class path Configuration liée à d’autres éléments: File Types: association extension <-> langage File Options: divers fichiers Scheduled Activities: programmation des analyses Metrics: exportation des metriques en CSV Reports: generation rapports HTML ou texte

Analyse d’un projet Java Metrics -> Metrics Summary Combien de lignes de code ? Project -> Project Overview Chart Quelles sont les fonctions les plus complexes ? Quelles sont les fonctions les plus longues ? CodeCheck -> Open CodeCheck

Exercice sur un des vos projets Créez un nouveau projet Understand avec un de vos projets Java ou C++ Générez les métriques qualités Analysez avec CodeCheck Conclusion: bugs trouvés ? Quels sont les règles qui vous semblent les plus importantes ? Celles qui vous semblent les moins importantes ?

Pour aller plus loin … Les règles de programmation sont en fait écrites en script Possibilité d’écrire ses propres règles de programmation