Cuprins
- 1. Verificare statică 3
- 2. Open - source repository 4
- 3. Program de verificare 5
- 3.1. Instalare Cppcheck 6
- 3.2. Interfața Cppcheck 7
- 3.3. Clasificare erori 8
- 4. Erori depistate 10
- 5. Analiză și metode de rezolvare 11
- 6. Figuri 18
- 7. Bibliografie 19
Extras din proiect
1. Verificare statică
Procesul de validare se realizează pe întreaga perioadă de dezvoltare a unei aplicații sau al unui produs software.
Verificarea și validarea se fac pentru fiecare etapă a procesului software.
Verificarea va avea ca scop stabilirea gradului de acoperire a funcționalităților pentru care un produs software a fost creat.
Inspectarea codului constă în analiza statică a reprezentării sistemului pentru descoperirea eventualelor erori care sunt mai greu de depistat prin testare (verificare dinamică).
Analiza statică explorează toate căile de execuție posibile într-un program la momentul compilării. Instrumentele de analiză statică pentru găsirea erorilor de programare la nivel scăzut devin tot mai utilizate.
Astfel de instrumente identifică erori cum ar fi depășirea buffer-ului, pointeri nuli, utilizarea variabilelor neinițializate etc. Analiza statică poate găsi erori care apar pe căile descoperite prin testare.
Totuși, analiza statică poate produce erori false.
Testarea, pe de altă parte, are capacitatea de a descoperi nu numai erorile "superficiale" expuse de instrumentele de analiză statică, dar și de a expune erori profunde și de proiectare. Nu ne putem aștepta la instrumente de analiză statică pentru a găsi astfel de erori. Instrumentele de analiză statică găsesc anumite clase ale acestor erori, în timp ce testarea trebuie utilizată pentru a găsi celelalte clase de erori.[1]
Cu timpul au fost dezvoltate programe care se ocupă de analiza statică însă tot mai multe s-au specializat pe anumite limbaje de programare.
Programul ales pentru detectarea erorilor în limbajul de programare C / C++ este Cppcheck cu versiunea 1.87.
2. Open - source repository
Generarea erorilor prin intermediul unui program specializat pentru un proiect relativ mare, destul de bine cotat (peste 1000 de stele), și activ în prezent este destul de dificilă deoarece acestea sunt verificate în prealabil și gradul de găsire a erorilor nedepistate este mic.
Cele mai multe variante sunt pentru jocuri însă această analiză are ca bază un proiect open-source care îndeplinește caracteristicile menționate anterior.
Pentru început au fost testate mai multe variante de proiecte:
- Jocul 2014: https://github.com/plibither8/2048.cpp
- Godot: https://github.com/godotengine/godot
- Cocos2d-x: https://github.com/cocos2d/cocos2d-x
Dintre toate acestea a treia variantă este cea care va fi utilizată.
Cocos2d-x [3] este o suită de instrumente open-source, cross-platform, de dezvoltare a jocurilor, folosite de milioane de dezvoltatori din întreaga lume. De asemenea, cocos2d-x este un cadru pentru construirea de cărți interactive, demo-uri și alte aplicații grafice. Se bazează pe cocos2d-iphone, dar în loc să utilizeze Obiectiv-C, utilizează C ++.
Funcționează pe platforme iOS, Android, OS X, Windows, Linux și platforme Web.
Arhitectura cocos2d-x:
Bibliografie
[1] Nachiappan Nagappan, Thomas Ball, „Static Analysis Tools as Early Indicators of Pre-Release Defect Density”, disponibil online: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.89.2326&rep=rep1&type=pdf, accesat: 17/05/2019.
[2] Cppcheck, „A tool for static C/C++ code analysis”, disponibil online: http://cppcheck.sourceforge.net/, accesat: 17/05/2019.
[3] Sursă imagine Cocos2d-x: https://camo.githubusercontent.com/62f509218415e5f677180a479fd65cfe54a17f04/687474703a2f2f7777772e636f636f7332642d782e6f72672f6174746163686d656e74732f3830312f636f636f733264785f706f7274726169742e706e67, accesat: 18/05/2019.
[4] Sursă imagine Cppcheck: https://www.google.com/url?sa=i&source=images&cd=&ved=2ahUKEwjssoqquKriAhXQGewKHS2BB4QQjRx6BAgBEAU&url=https%3A%2F%2Fhownot2code.com%2F2016%2F05%2F27%2Fan-overview-of-static-analyzers-for-cc-code%2F&psig=AOvVaw3Y4SFR2dV0fPCrmd2Cam-4&ust=1558453064262767, , accesat: 18/05/2019.
[5] Platforma Cocos2d-x: https://github.com/cocos2d/cocos2d-x, accesat: 01/04/2019.
[6] Sursă pull request #19603: https://github.com/cocos2d/cocos2d-x/pull/19603, accesat: 12/04/2019.
[7] Sursă pull request #19579: https://github.com/cocos2d/cocos2d-x/pull/19579/commits/bc40c143dc09115d30fa9878f0571ac5bb53d991, accesat: 08/04/2019
Preview document
Conținut arhivă zip
- Figuri Proiect vp.vsdx
- Verificarea programelor.docx