AdaControl 

version 1.12r4 du 03/08/2010

Téléchargement

AdaControl est un outil libre (GMGPL) qui détecte la présence de toutes sortes de constructions dans les programmes Ada. Son  but premier est de contrôler l'application de  règles de style ou de programmation, mais il peut être aussi utilisé comme un puissant outil pour rechercher l'utilisation (ou la non-utilisation) de nombreuses formes ou modèles de programmation. Les éléments recherchés peuvent être très simples, comme l'occurrence de certaines entités, déclarations ou instructions, ou très sophistiqués, comme la vérification du respect de véritables "design patterns".

Les éléments à rechercher sont définis par des règles; le tableau ci-dessous résume brièvement les règles actuellement vérifiées par AdaControl. Le chiffre entre parenthèses indique que cette règle comporte un certain nombre de sous-règles. Compte tenu de celles-ci, il y a en fait 388 tests qui peuvent être aujourd'hui réalisés par AdaControl!

Abnormal_Function_Return Contôle un "design pattern" qui garantit qu'une fonction retourne toujours un résultat
Allocators Contrôle les occurrences d'allocateurs, soit tous, soit ceux portant sur les types spécifiés
Array_Declarations (x5) Contrôle plusieurs métriques dans les tableaux
Barrier_Expressions Contrôle les éléments autorisés dans les barrières d'entrées protégées
Case_Statement (x4) Contrôle plusieurs métriques dans les instruction case.
Characters (x4) Contrôle l'occurrence de caractères de contrôles (comme les tabulations) dans le source.
Comments (x4) Contrôle le contenu ou le placement des commentaires.
Declarations (x128) Contrôle les occurrences de certaines déclarations Ada
Default_Parameter Contrôle les appels de sous-programmes et les instantiations de génériques qui utilisent (ou non) la valeur par défaut pour un paramètre donné
Dependencies (x4) Contrôle les dépendences sémantiques selon un ensemble d'unités indiquées, ou d'après leur nombre.
Directly_Accessed_Globals Contrôle le respect d'un "design pattern" qui garantit que toute variable globale n'est accédée que par des sous-programmes dédiés.
Duplicate_Initialization_Calls Contrôle le respect de "design patterns" qui évitent la double initialisation de paquetages ou de variables.
Entities Contrôle les occurrences de n'importe quelle entité Ada.
Entity_Inside_Exception Contrôle les occurrences d'une entité à l'intérieur d'un traite-exception.
Exception_Propagation (x5) Contrôle que certaines sortes de sous-programmes (ou des tâches) ne peuvent pas propager d'exceptions, qu'aucune élaboration ne peut propager d'exception, ou qu'un exception ne peut se propager en dehors de sa portée de déclaration.
Expressions (x25) Contrôle l'utilisation de certaines formes d'expressions
Global_References Contrôle les accès non synchronisés à des variables globales.
Header_Comments (x2) Contrôle la présence de commentaires en tête de chaque module.
Improper_Initialization (x3) Contrôle un "design pattern" qui garantit que toute variable est initialisée avant d'être utilisée, et n'est pas initialisée à tort.
Instantiations Contrôle les instantiations de génériques, soit toutes, soit celles effectuées avec les entités donnée.
Insufficient_Parameters Contrôle la présence de paramètres en notation positionnelle dont les valeurs ne permettent pas de comprendre le rôle.
Local_Hiding (x3) Contrôle les déclarations d'identificateurs qui en cachent un identique plus externe.
Max_Blank_Lines Contrôle la présence de plus d'un nombre donné de lignes vides.
Max_Call_Depth Contrôle la profondeur d'appel de sous-programmes
Max_Line_Length Contrôle la longueur de ligne maximale.
Max_Nesting Contrôle les portées imbriquées au delà d'une limite donnée.
Max_Size (x10) Contrôles la taille maximale des instructions composées
Max_Statement_Nesting (x5) Contrôles les instructions composées imbriquées au delà d'une limite donnée
Movable_Accept_Statements Contrôle la présence d'instructions qui pourraient être sorties d'une instruction accept.
Multiple_Assignments (x2) Contrôle les affectations multiples à une même variable, et aux composants d'une variable structurée susceptibles d'être remplacées par une affectation d'agrégat..
Naming_Convention Contrôle la forme des noms autorisés (ou interdits) dans les déclarations.
No_Operator_Usage (x2) Contrôle les types entiers dont aucun opérateur, ou seulement les opérateurs logiques, sont utilisés.
Non_Static (x6) Contrôle les expressions non statiques dans les contraintes d'index ou de discriminants, ou dans les instantiations.
Not_Elaboration_Calls Contrôle les appels de sous-programmes qui apparaîssent ailleurs que dans l'élaboration d'un paquetage de bibliothèque.
Not_Selected_Name Contrôle que certaines entités sont toujours utilisées sous forme préfixée.
Object_Declarations (x3) Contrôle certains paramètres des déclarations d'objets (constantes et variables).
Parameter_Aliasing Contrôle les appels de sous-programmes ou d'entrées où une même variable est fournie dans plus d'un paramètre [in] out.
Parameter_Declarations (x4) Contrôle les caractéristiques des paramètres des entités appelables (procédures, fonctions et entrées)
Potentially_Blocking_Operations Contrôle l'utilisation d'opérations potentiellement bloquantes dans les opérations protégées.
Pragmas Contrôle l'utilisation de pragmas spécifiques.
Record_Declarations Contrôle différents aspects des composants d'un type article.
Reduceable_Scope (x9) Contrôle les déclarations qui pourraient être faites dans des portées plus internes.
Representation_Clauses (x10) Contrôle les occurrences des clauses de representation.
Return_Type (x6) Contrôle la présence de certaines formes de types comme types de retour de fonctions.
Side_Effect_Parameters Contrôle les appels de sous-programmes ou les instantiations de génériques qui appellent des fonctions à effet de bord, et dont l'effet peut dépendre de l'ordre d'évaluation.
Silent_Exceptions Contrôle lest traite-exceptions qui ne relèvent pas d'exception ni n'appellent de procédure de trace.
Simplifiable_Expressions (x7) Contrôle les occurrences de diverses formes d'expressions qui peuvent être simplifiées.
Simplifiable_Statements (x10) Contrôle les occurrences de diverses formes d'instructions qui peuvent être simplifiées.
Statements (x57) Contrôle les occurrences d'instructions Ada.
Style (x15) Contrôle diverses formes de constructions généralement recommandées dans les règles de style.
Terminating_Tasks Contrôle un "design pattern" qui garantit que les tâches ne se terminent jamais.
Type_Initial_Values Contrôle qu'une constant d'initialisation est déclarée avec chaque type.
Uncheckable (x3) Contrôle les constructions qui ne sont pas vérifiables statiquement par les autres règles
Units (x2) Contrôle que toutes les unités nécessaires sont analysées, et seulement celles-là.
Unnecessary_Use_Clause (x5) Contrôle les clauses use de paquetages dont aucun élément n'est référencé dans la portée de la clause use.
Unsafe_Paired_Calls Contrôle un "design pattern" qui garantit que certains appels sont toujours appariés (comme des procédures P et V).
Unsafe_Unchecked_Conversion Contrôles les instantiations de Unchecked_Conversion entre types de tailles différentes ou non spécifiées.
Usage (x11) Contrôle l'usage d'objets dans certaines conditions (dans des spécifications de paquetages, lus, écrits, modifiés).
Use_Clauses (x2) Contrôle les occurrences de clauses use portant sur tout paquetage autre que ceux passés en paramètre.
With_Clauses (x3) Contrôle la bonne utilisation de clauses with.

Pour plus de détails sur ces règles ou sur l'utilisation d'AdaControl, veuillez consulter le guide utilisateur (en anglais) ci-dessous.

AdaControl est un outils "ligne de commande", mais il a été totalement intégré dans l'environnement GPS d'AdaCore. Depuis GPS, vous pouvez lancer AdaControl, corriger les violations, ou éditer le fichier de règles avec juste quelques clics de souris.

Mais AdaControl est bien plus qu'un simple ensemble de règles de codage: c'est un environnement complet, prévu pour être facilement étendu. Si votre règle préférée n'est pas fournie, vous pouvez la rajouter vous-mêmes! Et bien sûr, nous continuerons à étendre le nombre de règles à l'avenir. Pour avoir une idée de comment cela se passe, consultez le manuel du programmeur AdaControl (en anglais).

Le développement initial d'AdaControl a été financé par Eurocontrol. Certaines règles ont été financées par BelgoControlAnsaldo-STS (ex CSEE-Transport) et SAGEM-DS. C'est un outil stable qui a été utilisé pour vérifier notamment les codes Ada d'Eurocontrol (Bruxelles, plus de 1_100_000 LdC, Maastricht), BelgoControl, Ansaldo-STS, Faiveley, SAGEM-DS (code DO178B/A)... Il a également été testé contre tous les tests exécutables de l'ACATS.

AdaControl est une application ASIS.

AdaControl est un outil libre distribué sous licence GMGPL. Ceci ne l'empêche pas d'être un produit commercial d'Adalog, pour lequel nous offrons un contrat de maintenance. Nous pouvons aussi développer des règles spécifiques en fonction de vos besoins, ou plus généralement fournir une assistance pour la définition et la mise en œuvre de règles de programmation. Pour tout renseignement, merci de contacter info@adalog.fr.

Téléchargement

AdaControl, comme toute application ASIS, ne peut s'exécuter que s'il a été compilé avec exactement la même version du compilateur que celle qu'il utilise lui-même lorsqu'il s'exécute. Il n'est donc fourni sous forme exécutable que pour GNAT GPL/2010 (Windows et Linux). Pour toute autre version de GNAT, il faut télécharger la version source et recompiler (ce qui est très simple à faire, à condition d'avoir installé ASIS). Il n'a été testé qu'avec GNAT (GnatGPL-2010 et GnatPro-6.3.2), mais devrait pouvoir être porté facilement vers tout autre compilateur fournissant l'interface ASIS.

Les versions ZIP ou TGZ vous permettent d'installer AdaControl à votre goût; sous Windows, les installateurs permettent de tout installer automatiquement - à condition que le répertoire <GNAT>\bin soit sur votre chemin d'exécution.

Guide utilisateur
Distribution source
Distribution exécutable
Windows Gnat GPL 2010
Distribution exécutable
Linux Gnat GPL 2010
View doc Fichier ZIP
(1,77Mo)
Download
Fichier TGZ
(1,44Mo)
Download
Installateur Windows
(1,28Mo)
Download
Fichier ZIP
(5,36Mo)
Download
Installateur
(3.49Mo)
Download
Fichier ZIP
(5,15Mo)
Download

Retour page d'accueil Mesure d'audience par WEBORAMA