AdaControl

Link: http://www.adalog.fr/en/adacontrol.html

AdaControl er en gratis (GMGPL) værktøj, der registrerer brugen af forskellige typer af konstruktioner i Ada-programmer. Dens første mål er at kontrollere korrekt brug af style eller regler, men det kan også bruges som et effektivt værktøj til at søge efter brug (eller manglende brug) af forskellige former for programmering stilarter eller design mønstre. Søgte elementer, der spænder fra meget simple, ligesom forekomsten af certaine enheder, erklæringer eller udtalelser, for at meget sofistikerede, som kontrol af, at visse programmering mønstre er ved at blive adlydt..

Hvilke elementer eller konstruktioner er søgt er defineret ved et sæt af regler; følgende skema giver en kort oversigt over regler i øjeblikket kontrolleret af AdaControl. Tallet i parentes efter navnet på reglen giver antallet af subrules, hvis nogen. I betragtning af alle mulige regler og subrules, dette gør 539 tests, der kan udføres i øjeblikket af AdaControl!

Abnormal_Function_Return Styrer et design, mønster, der sikrer, at en funktion returnerer altid med et godt resultat .
Allocators Kontroller ocurrences af allocators, enten alle af dem, eller dem, der er rettet mod bestemte typer.
Array_Declarations (x6) Kontroller flere målinger i array-erklæringer og-typer, der anvendes som indeks
Aspekter (x3) Kontrol aspekt specifikationer (Ada 2012)
Opgaver (x4) Kontroller spørgsmål, der er relateret til opgaver, som array glidende, adgang værdier dobbeltarbejde, flere opgaver til samme variabel, eller opgaver i forbindelse med at dele af en struktureret variable, som kunne være erstattet af den samlede opgave.
Barrier_Expressions Kontrol elementer, der er tilladt i de udtryk for beskyttede indgange barrierer
Case_Statement (x5) Kontroller flere målinger i sag – sætninger.
Tegn (x4) Kontroller forekomster af kontrol tegn (som tabs) i kilden.
Kommentarer (4) Styrer indholdet eller placering af visse kommentarer.
Erklæringer (x164) Kontroller forekomster af visse Ada erklæringer.
Default_Parameter Kontroller underprogram opkald og generiske instantiations at bruge (eller ikke) standardværdi for en given parameter.
Afhængigheder (x7) Kontrol, afhængigheder af enheder, enten i henhold til et sæt af tilladte enheder, eller ved at tælle.
Afledning (x2) Kontrol type afledning ifølge ane ‘ s type, eller stamfader kategori.
Directly_Accessed_Globals Styrer et design, mønster, der sikrer, at alle de globale variabler, der er kun adgang via dedikerede underprogrammer.
Duplicate_Initialization_Calls Kontroller design mønstre, der forhindre dobbelt initialisering af pakker eller variable.
Enheder Kontroller forekomster af alle Ada-enhed.
Entity_Inside_Exception Kontroller forekomster af enheder inde undtagelse handling.
Exception_Propagation (x5) Kontroller, at visse underprogrammer (eller opgaver) kan ikke formere undtagelser, at der ingen uddybning kan udbrede undtagelser, eller som en undtagelse, der ikke kan formere sig uden for anvendelsesområdet af erklæringen.
Udtryk (x58) Kontrol brug af visse former for udtryk
Generic_Aliasing (x5) Kontrol instantiations, hvor det samme element svarer til ere formelle parametre
Global_References (x5)
Kontroller synkroniserede adgang til de globale variabler.
Header_Comments (x2) Kontroller tilstedeværelsen af kommentarer i starten af hvert modul.
Improper_Initialization (x3) Styrer et design, mønster, der sikrer, at variablen er initialiseret, inden den anvendes, og er ikke uselesly initialiseret.
Instantiations Kontroller generiske instantiations, enten alle af dem, eller dem, der bruger angivne enheder.
Insufficient_Parameters Styrer brugen af positionelle parametre i opkald, hvor værdien dœs ikke give tilstrækkelig information.
Local_Access (x6) Styrer anvendelsen af adgang værdier, der udpeger fælles globale enheder.
Local_Hiding (x2) Kontroller forekomster af lokale identifikatorer at skjule et identisk ydre.
Max_Blank_Lines Styrer forekomsten af mere end et nærmere fastsat antal på hinanden følgende tomme linjer.
Max_Call_Depth Kontrollerer det maksimale dybde af underprogram-kald.
Max_Line_Length Kontroller maksimal længde på source linjer.
Max_Nesting (x4)
Kontroller scopes indlejrede mere dybt end en given grænse.
Max_Size (x20) Kontroller maksimale længde af sammensatte udsagn og udarbejdelse enheder.
Max_Statement_Nesting (x5) Kontroller sammensatte udsagn indlejrede mere dybt end en given grænse.
Movable_Accept_Statements Kontrol-sætninger, der kan flyttes uden for en accepter – sætningen.
Naming_Convention Kontroller form af lov (eller forbydes) navne i erklæringer.
No_Operator_Usage Kontroller integer typer, hvor der ikke er nogen operatør, eller kun logiske operatorer, der er anvendt.
Non_Static (x6) Kontroller ikke statisk udtryk i indeks eller diskriminant begrænsninger, eller i instantiations.
Not_Elaboration_Calls Kontroller underprogram opkald foretages fra steder uden for pakke udarbejdelse kode.
Not_Selected_Name Kontroller, at visse enheder er altid navngivet ved hjælp af udvalgte notation.
Object_Declarations (x4) Styrer forskellige parametre af objekt erklæringer (konstanter og variabler).
Parameter_Aliasing Kontroller underprogrammer og indlæg opkald, hvor en variabel er fastsat til mere end én [i] ikke parameter.
Parameter_Declarations (x9) Kontrol karakteristika af parametre i konverterbare enheder (procedurer, funktioner og indgange)
Positional_Associations (x3)
Kontroller positionelle foreninger (i modsætning til navngivne foreninger).
Potentially_Blocking_Operations Styrer brugen af potentielt blokere operationer fra i beskyttede aktiviteter.
Pragmas Styrer anvendelsen af specifikke pragmas.
Record_Declarations Styrer forskellige aspekter af komponenter af en record-type.
Reduceable_Scope (x9) Kontrol-erklæringerne, der kunne flytte til mere dybt indlejrede områder.
Representation_Clauses (x12) Kontroller forekomster af repræsentation klausuler.
Return_Type (x8) Styrer anvendelsen af visse former for typer som returnerer typer af funktioner.
Side_Effect_Parameters Kontroller underprogram opkald og generiske instantiations at kalde funktioner med side-effekt, således at der skabes en afhængighed, at den rækkefølge af evaluering.
Silent_Exceptions Kontroller undtagelse-handlere, som ikke reraise undtagelser eller ringe angivet underprogrammer.
Simplifiable_Expressions (x7) Kontroller forekomster af forskellige former for udtryk, der kan forenkles.
Simplifiable_Statements (x10) Kontroller forekomster af forskellige former for erklæringer, som kan forenkles.
Erklæringer (x73) Kontroller forekomster af Ada-sætninger.
Style (x17) Styrer forskellige former for konstruktioner anbefales generelt i stil regler.
Terminating_Tasks Styrer et design, mønster, der sikrer, at opgaver, der aldrig ophører.
Type_Initial_Values Kontroller, at hver erklæret type har en tilhørende initialisering konstant.
Type_Usage (x2)
Kontroller brugen af typer eller skriv kategorier på forskellige steder.
Uncheckable (x3) Kontrol konstruktioner, som ikke er statisk verificeres af andre regler
Unit_Pattern (x4)
Kontrol anvendelsesmønstre af programmet enheder og elementer, der er anmeldt i dem.
Enheder (x2) Kontroller, at alle nødvendige enheder er analyseret, og kun de.
Unnecessary_Use_Clause (x5) Kontrol klausuler på pakker, hvor der ikke er element i den pakke, der er nævnt i omfanget af klausul.
Unsafe_Elaboration Controsl pakker, der kan være genstand for forkert udarbejdelse for afhængigheder.
Unsafe_Paired_Calls Styrer et design, mønster, der sikrer, at bestemte opkald er altid forbundet (som P/V-procedurer).
Unsafe_Unchecked_Conversion Kontrol instantiations af Unchecked_Conversion mellem forskellige typer af anden eller uspecificeret størrelser.
Usage (x11) Kontrol brug af genstande, som er under visse betingelser (i pakke specifikationer, læse, skrevet ændret…).
Use_Clauses (x6) Kontroller forekomster af klausuler, undtagen for de angivne pakker.
With_Clauses (x3) Kontroller korrekt brug af klausuler.

For flere detaljer om disse regler, eller om anvendelse af AdaControl i almindelighed, se venligst user guide.

AdaControl er et kommandolinje-værktøj, men det har været fuldt integreret i AdaCore ‘ s GPS-miljø. Fra GPS, kan du køre AdaControl, løse krænkelser, eller redigér regler for filer med blot et par klik.

NYHED!

AdaControl kan nu hjælpe dig med at løse krænkelser: under GPS, skal du blot klikke på den lille skruenøgle-ikonet, ligesom med compiler-beskeder.

Du kan også lave alle overtrædelser på én gang fra en menu kommando. Og en ny command line utility er fastsat til at løse alle fixable krænkelser automatisk!

Men AdaControl er mere end et sæt af koder regler: det er et komplet miljø, der er designet til at være let udvides. Hvis din favorit-reglen er ikke til rådighed, kan du tilføje det selv! Og selvfølgelig vil vi fortsætte med at udvide antallet af regler i fremtiden. Hvis du ønsker at se på, hvordan dette er muligt, henvises til AdaControl programmør guide.

Indledende udvikling af AdaControl var sponsoreret af Eurocontrol. Nogle regler, der var sponsoreret af BelgoControl, Alstom-Transport, Ansaldo-STS (tidl. BSE-Transport), og SAGEM-DS. Det er en gamle værktøj, som rutinemæssigt anvendes til at kontrollere Ada-koder i Eurocontrol (Bruxelles, mere end 2_000_000 SLOC, Maastricht), BelgoControl, Alstom, Ansaldo-STS, Faiveley, SAGEM-DS (niveau DO178B/EN)… Det har også været kørt mod alle eksekverbare test fra ACATS.

AdaControl er en ASIS ansøgning.

AdaControl er et gratis værktøj under GMGPL licens. Ikke desto mindre, det er et kommercielt produkt fra Adalog, som vi tilbyder en support-og vedligeholdelsesaftale. Vi tilbyder også tjenester til udvikling af regler for dine specifikke behov, eller mere generelt bistand til definition og brug af regler. For information, kontakt venligst [email protected].

Download

AdaControl, som enhver ASIS ansøgningen, kan det kun køre, hvis der er udarbejdet med præcis samme version af compileren, at det bruger sig selv, når det udfører. Det er derfor fastsat som eksekverbare kun for GNAT GPL/2017 (i Windows og Linux); til brug sammen med alle andre version af MYG, kan du hente source-version og genoversætte (som er ganske let at gøre, forudsat ASIS er blevet installeret). Det er kun testet med MYGGEN, men bør være let bærbar til nogen anden compiler, der giver en ASIS interface.

ZIP-eller TGZ versioner giver dig mulighed for at installere AdaControl som du vil; under Windows, installatører installere alt automatisk – forudsat <MYGGEN>\bin mappe på din sti.

Source Distribution
ZIP-fil
(2.77 Mo)
TGZ fil
(2.35 Mo)
Windows installer
(1.90 Mo)
Eksekverbare Distribution
Windows Gnat GPL 2017 Linux Gnat GPL 2017 MacOS
ZIP-fil
(19.37 Mo)
Installer
(9.46 Mo)
ZIP-fil
(19.81 Mo)
ZIP-fil
(endnu ikke tilgængelig)

ADVARSEL: En uoverensstemmelse blev indført i ASIS-grænseflade til Ada 2005/2012, som var nødvendigt for at korrekt håndtere nogle af de nye funktioner. Kilde distribution af AdaControl kræver mindst GnatPro-7.2.0 eller GnatGPL 2013. Hvis du ønsker at bruge en tidligere version af Myg, bedes du downloade en version fra SourceForge (jf. under), ved hjælp af branch “master-old_gnat” for versioner op til GnatPro-7.0.x og GnatGPL2011, og gren “GPL2012” for GnatPro-7.1.x og GnatGPL2012.

DebianDebian-brugere: AdaControl er pakket for Debian. For at installere det:
apt-get install adacontrol

FreeBSDFreeBSD-brugere: du kan finde en port af AdaControl til FreeBSD her.

GnatHub integrationen

Nedenfor er en download ZIP-fil, som indeholder udvidelsesmoduler for hjælp AdaControl som et måleværktøj under GnatHub (AdaCore) og giver resultater analyse med GnatDashboard/SONARQube.

Installation og brug direktiver, der er en del af AdaControl ‘ s Brugervejledning

GnatHub Integrationen
ZIP-fil
(1.23 Mo)

SourceForge

Den nuværende version (ustabil) er til rådighed (under GIT) fra SourceForge. Du kan også finde der de mellemliggende versioner mellem de officielle udgivelser, der kan være relevant for visse versioner af Myg og endda give dig egen bedømmelse af AdaControl. Du kan indsende fejlrapporter, foreslå forbedringer mv. ved at klikke på “Billet” på SourceForge side, eller klikke på dette direkte link.

Support-og vedligeholdelsesaftale

Adalog giver kommercielle støtte til AdaControl. Support omfatter følgende tjenester:

  • Hjælpe med installation procedurer.
  • Forklaringer på anvendelsen af værktøjet, og hjælp til at oversætte kodning standarder i AdaControl regler.
  • Prioritet håndtering af billetter, som rapporteres via vores BT-system.
  • Korrektion af problemer i forbindelse med brugen af AdaControl. Pre-releases versioner af AdaControl er fastsat for hver korrigeret problem.
  • Adgang til beta-versioner før de er frigivet.
  • Holde i sync kundens egne regler med den nyeste version af AdaControl.
  • Reduceret sats for on-demand-udvikling af brugerdefinerede regler.
  • Prioritet af ekstraudstyr anmodninger. Tilfredsstillende ekstraudstyr anmodninger, der ikke er en del af support-kontrakt, men Adalog er konstant at forbedre AdaControl, og forslag, der stammer fra understøttes kunder får en høj prioritet i vores todo liste.

Adalog ikke kan løse problemer, hvis oprindelse skyldes compiler fejl eller mangler i gennemførelsen af ASIS (kontakt din compiler udbyder for støtte på disse problemer). Men Adalog vil gøre sit bedste for at hjælpe indberetning af sådanne problemer at compileren sælger, og til at finde løsninger, indtil problemet er løst.

For oplysninger om priser eller spørgsmål om AdaControl, bedes du skrive til: [email protected]

Tilpasning af AdaControl

AdaControl kan tilpasses med særlige regler i henhold til kundernes behov. For eksempel:

  • Business-regler
  • Regler til håndhævelse af kodning praksis, der kræves af hardware
  • de Særlige regler skyldes, at certificering begrænsninger

Adalog har udviklet tilpassede versioner af AdaControl for forskellige kunder. Hvis du har nogen særlige behov i relation til at styre dit software, kan du komme i kontakt med os ved at skrive til [email protected].

Publikationer om AdaControl

En række papirer er blevet offentliggjort om AdaControl eller dens brug af forskellige verifikation opgaver:

  • Jean-Pierre Rosen: “På de fordele for industrials af at sponsorere udviklingen af fri software”, Ada Bruger Journal, Bind 26, nummer 4, december 2005,http://www.adalog.fr/publicat/Free-software.pdf
  • Jean-Pierre Rosen: “En Sammenligning af Industrielle Kodning Regler”, Ada Bruger Journal, Bind 29, nummer 4, december 2008,http://www.adalog.fr/publicat/coding-rules.pdf
  • Jean-Pierre Rosen: “En Metode til at Undgå Kendt Compiler Problemer med at Bruge Statisk Analyse”, proceedings of the ACM SIGAda Årlige Internationale Konference (SIGAda 2010)http://dl.acm.org/authorize?316395
  • Jacob Sparre Andersen: “at Indføre statisk analyse for et modent projekt”, afvikling af 22 Ada-Europe International Konference om Pålidelig Software Teknologier – Ada-Europa 2017, Wien, Østrig, 12-16 juni 2017.http://www.springer.com/us/book/9783319605876

teksten på denne side er tilgængelig for modifikation, og genbrug under vilkår for Creative Commons Attribution-Sharealike 3.0 Unported License og GNU Free Documentation License (ikke-versionsspecifik, uden invariante sektioner, front-cover, tekster, eller back-cover tekst).


Denne artikel er blevet oversat til Serbo-kroatisk sprog ved Jovana Milutinovich fra Web-Nørder Ressourcer.