Back to site
Since 2004, our University project has become the Internet's most widespread web hosting directory. Here we like to talk a lot about web servers, web development, networking and security services. It is, after all, our expertise. To make things better we've launched this science section with the free access to educational resources and important scientific material translated to different languages.

AdaControl

verzija 1.14r9, od 29. avgusta 2012.


AdaControl je besplatan (pod GMGPL licencom) alat koji otkriva upotrebu različitih vrsta konstrukata u Ada programima. Njegova prvenstvena namena je kontrola pravilnog korišćenja stila ili pravila programiranja, ali se takođe može koristiti i kao moćan alat za traženje upotrebe (ili ne-upotrebe) različitih oblika stilova programiranja, ili dizajn obrazaca. Traženi elementi variraju od vrlo jednostavnih, kao što je pojavljivanje određenih objekata, deklaracija, ili naredbi, do veoma sofisticiranih, kao što je proveravanje da li su poštovani određeni obrasci pri programiranju.

Skupom pravila je definisano koji elementi, ili konstrukti, se traže; sledeća tabela daje sažeti prikaz pravila koja se trenutno proveravaju AdaControl-om. Broj u zagradi, iza naziva pravila, pokazuje koliko (za dato pravilo) ima pod-pravila, ako ih ima. Uzimajući u obzir sva moguća pravila i pod-pravila, ovo daje 421 test koji se trenutno može izvoditi AdaControl-om!

Abnormal_Function_Return Kontroliše dizajn obrazac koji osigurava da funkcija uvek vraća rezultat.
Allocators Kontroliše pojavljivanja alokatora, ili svih, ili onih koji ciljaju na određene tipove.
Array_Declarations (x6) Kontroliše nekoliko metrika u deklaracijama nizova i tipove koji se koriste kao indeksi
Barrier_Expressions Kontroliše elemente dozvoljene u izražavanju barijera zaštićenih unosa.
Case_Statement (x4) Kontroliše nekoliko metrika u case naredbama.
Characters (x4) Kontroliše pojavljivanja kontrolnih karaktera (poput tabulatora) u izvornom kodu.
Comments (x4) Kontroliše sadržinu i postavljanje određenih komentara.
Declarations (x141) Kontroliše pojavljivanja određenih Ada deklaracija.
Default_Parameter Kontroliše pozivanja potprograma i instancijalizacije generičkog procesa koje koriste (ili ne) podrazumevanu vrednost za dati parametar.
Dependencies (x4) Kontroliše zavisnosti jedinica, ili prema skupu dozvoljenih jedinica, ili brojanjem.
Directly_Accessed_Globals Kontroliše dizajn obrazac koji osigurava da se svim globalnim promenljivama pristupa isključivo kroz za to namenjene potprograme.
Duplicate_Initialization_Calls Kontroliše dizajn obrasce koji sprečavaju dvostruku inicijalizaciju paketa ili promenljivih.
Entities Kontroliše pojavljivanja bilo kog Ada entiteta.
Entity_Inside_Exception Kontroliše pojavljivanja entiteta unutar rutina za obradu izuzetaka.
Exception_Propagation (x5) Kontroliše da li određeni potprogrami (ili procesi) ne mogu da izbacuju izuzetke, da li ni jedna razrada ne može da izbaci izuzetke, odnosno da li neki izuzetak ne može da iskoči izvan svog polja deklarisanja.
Expressions (x28) Kontroliše upotrebu određenih oblika izraza
Global_References (x3) Kontroliše nesinhronizovane pristupe globalnim promenljivama.
Header_Comments (x2) Kontroliše prisustvo komentara na početku svakog modula.
Improper_Initialization (x3) Kontroliše dizajn obrazac koji osigurava da je svaka promenljiva inicijalizovana pre nego se upotrebi, i da nije bespotrebno inicijalizovana.
Instantiations Kontroliše generičke instancijalizacije, ili sve, ili one koje koriste određene entitete.
Insufficient_Parameters Kontroliše upotrebu pozicionih parametara u pozivima gde vrednost ne pruža dovoljno informacija.
Local_Access (x6) Kontroliše upotrebu pristupnih vrednosti koje određuju ne-globalne entitete.
Local_Hiding (x3) Kontroliše pojavljivanja lokalnih identifikatora koji skrivaju iste takve, spoljne.
Max_Blank_Lines Kontroliše pojavljivanje većeg broja uzastopnih praznih linija, od navedenog broja.
Max_Call_Depth Kontroliše maksimalnu dubinu poziva potprograma.
Max_Line_Length Kontroliše maksimalnu dužinu programskih linija izvornog koda.
Max_Nesting Kontroliše ima li polja koja su dublje ugnežđena od datog limita.
Max_Size (x10) Kontroliše maksimalnu dužinu kompozitnih naredbi.
Max_Statement_Nesting (x5) Kontroliše ima li kompozitnih naredbi koje su dublje ugnežđene od datog limita.
Movable_Accept_Statements Kontroliše naredbe koje bi se mogle premestiti van neke accept naredbe.
Multiple_Assignments (x2) Kontroliše višestruka dodeljivanja vrednosti jednoj istoj promenljivoj, ili komponentama neke strukturirane promenljive koja se može zameniti agregatnom funkcijom dodele vrednosti.
Naming_Convention Kontroliše formu dozvoljenih (ili zabranjenih) imena u deklaracijama.
No_Operator_Usage (x2) Kontroliše celobrojne tipove tamo gde nema operatora, ili gde su upotrebljeni samo logički operatori.
Non_Static (x6) Kontroliše ne-statičke izraze u indeksnim ili diskriminantnim ograničenjima, ili u instancijalizacijama.
Not_Elaboration_Calls Kontroliše pozive potprograma sa mesta izvan koda razrade paketa.
Not_Selected_Name Kontroliše da li su određeni entiteti uvek imenovani uz korićenje izabranog označavanja.
Object_Declarations (x3) Kontroliše različite parametre deklarisanja objekata (konstante i promenljive).
Parameter_Aliasing Kontroliše potprograme i pozive unosa gde je promenljiva obezbeđena za više od jednog [ulaznog] izlaznog parametra.
Parameter_Declarations (x4) Kontroliše karakteristike parametara u entitetima koji se mogu pozivati (procedure, funkcije i unosi)
Potentially_Blocking_Operations Kontroliše upotrebu potencijalno blokirajućih operacija iz zaštićenih operacija.
Pragmas Kontroliše korišćenje specifičnih pragmi.
Record_Declarations Kontroliše različite aspekte komponenti nekog zapis-tipa.
Reduceable_Scope (x9) Kontroliše deklaracije koje bi se mogle premestiti u dublje ugnežđena polja.
Representation_Clauses (x10) Kontroliše pojavljivanja reprezentacijskih klauzula.
Return_Type (x8) Kontroliše upotrebu određenih vrsta tipova kao povratnih tipova funkcija.
Side_Effect_Parameters Kontroliše pozive potprograma i generičke instancijalizacije koje pozivaju funkcije sa neželjenim efektom, stvarajući tako zavisnost od redosleda izračunavanja.
Silent_Exceptions Kontroliše rutine za obradu izuzetaka koje ne izbacuju ponovo izuzetke, niti pozivaju naznačene potprograme.
Simplifiable_Expressions (x7) Kontroliše pojavljivanja različitih formi izraza koji bi mogli biti pojednostavljeni.
Simplifiable_Statements (x10) Kontroliše pojavljivanja različitih formi naredbi koje bi mogle biti pojednostavljene.
Statements (x61) Kontroliše pojavljivanja Ada naredbi.
Style (x15) Kontroliše različite forme konstrukata, generalno preporučenih u pravilima stila.
Terminating_Tasks Kontroliše dizajn obrazac koji osigurava da se procesi nikada ne završe.
Type_Initial_Values Kontroliše da li svaki deklarisani tip ima jednu pridruženu inicijalizacionu konstantu.
Uncheckable (x3) Kontroliše konstrukte koji se ne mogu statički proveriti drugim pravilima
Units (x2) Kontroliše da li su analizirane sve potrebne jedinice, i samo one.
Unnecessary_Use_Clause (x5) Kontroliše use klauzule u paketima, gde ni jedan elemenat datog paketa nije referenciran iz opsega date use klauzule.
Unsafe_Paired_Calls Kontroliše dizajn obrazac koji osigurava da određeni pozivi uvek idu u paru (poput P/V procedura).
Unsafe_Unchecked_Conversion Kontroliše instancijalizacije Unchecked_Conversion (neproverene konverzije) izmeđi tipova različitih ili nenavedenih veličina.
Usage (x11) Kontroliše korišćenje objekata u određenim stanjima (u specifikacijama paketa, read, written modified...).
Use_Clauses (x2) Kontroliše pojavljivanja use klauzula, osim za u naznačenim paketima.
With_Clauses (x3) Kontroliše pravilno korišćenje with klauzula.

Za više detalja o ovim pravilima, ili uopšteno o korišćenju AdaControl-a, molimo vas da pogledate korisnički vodič, dole.

AdaControl je alat za rad iz komandne linije, ali je potpuno integrisan u AdaCore-ovo GPS okruženje. Iz GPS-a, možete pokretati AdaControl, popravljati kršenja pravila, ili uređivati pravila sa samo nekoliko klikova.

Ali AdaControl je više od skupa pravila pisanja koda: to je kompletno okruženje, dizajnirano da se lako proširuje. Ako u njemu nema vašeg omiljenog pravila, možete ga dodati sami! A mi ćemo, naravno, u budućnosti nastaviti da povećavamo broj pravila. Ako želite da vidite kako je to moguće, molimo vas da pogledate AdaControl vodič za programere (AdaControl programmer guide).

Početni razvoj AdaControl-a je sponzorisala kompanija Eurocontrol. Neka pravila su podržana od strane kompanija BelgoControl, Ansaldo-STS (raniji CSEE-Transport) i SAGEM-DS. To je “zreo" alat, koji se rutinski koristi za proveru Ada programa u kompanijama Eurocontrol (Brisel, više od 1_100_000 linija koda, Mastriht), BelgoControl, Ansaldo-STS, Faiveley, SAGEM-DS (nivo DO178B/A)... On je takođe izvršavan naspram svih testova izvršnih fajlova, iz ACATS-a.

AdaControl je ASIS aplikacija.

AdaControl je besplatan alat, pod GMGPL licencom. Ipak, to je komercijalni proizvod Adalog-a, za koji mi nudimo ugovor o održavanju. Takođe nudimo usluge razvoja pravila za vaše specifične potrebe, ili, uopštenije, pomoć pri definisanju i korišćenju pravila programiranja. Za informacije, molimo kontaktirajte info@adalog.fr.

Preuzimanje

AdaControl, kao i svaka druga ASIS aplikacija, može da radi samo ako je kompajliran istim kompajlerom koji i sam koristi kada izvršava kompajliranje nekog programa. Stoga je kao izvršni fajl postavljen samo za GNAT GPL/2012 (Windows i Linux); za upotrebu sa bilo kojom drugom verzijom GNAT-a, molimo vas da preuzmete izvorni kod, i da ga kompajlirate (što je prilično lako uraditi, pod uslovom da je ASIS instaliran). Program je testiran samo sa GNAT-om, ali bi trebalo da je lako prenosiv u bilo koji kompajler koji pruža ASIS interfejs.

UPOZORENJE: Jedna nekompatibilnost je uvedena sa ASIS interfejsom za Ada-u 2005/2012, koji je bio neophodan da se pravilno obrade neke od novih funkcija. Ova izmena je uključena u Gnat, počev sa verzijama GnatPRO 7.1.0 i GPL-2012. Distribucija AdaControl-a, u obliku izvornog koda, je zato obezbeđena u dve varijante , “stari Gnat" za prethodne verzije, i “novi Gnat" za ove, i za novije verzije.

ZIP ili TGZ verzije vam omogućavaju da instalirate AdaControl onako kako želite; pod Windows-om, instalacioni alati sve automatski instaliraju - pod pretpostavkom da se direktorijum \bin nalazi u vašoj izvršnoj putanji.

Vodič za korisnike Distribucija sa izvornim kodom
Distribucija sa izvršnim fajlom
Windows Gnat GPL 2012
Distribucija sa izvršnim fajlom
Linux Gnat GPL 2012

ZIP fajl
(1,86Mo)
TGZ fajl
(1,55Mo)
Windows instalacioni
program (1,45Mo)
ZIP fajl
(5,71Mo)
Instalacioni program
(3.89Mo)
ZIP fajl
(5,61Mo)

SourceForge

Trenutna razvojna verzija (nestabilna) je dostupna (pod GIT-om) na SourceForge-u. Takođe, putem ove strane možete slati izveštaje o greškama u programu (Hosted Apps/MantisBT), i čak dati sopstvenu ocenu AdaControl-a.





Published (Last edited): 06-11-2012 , source: http://www.adalog.fr/adacontrol2.htm