Uneltele folosite pentru analiză statică de cod sunt esentiale si, în acelasi timp, prezintă multe elemente care încă necesită să fie explorate în lumea modernă a ingineriei soft-ware. Acestea sunt folosite din ce în ce mai mult de către dezvoltatorii software, indiferent de magnitudinea proiectului, dar totusi doar un număr mic de dezvoltatori cunoaste, de fapt, cum functionează aceste unelte uimitoare. Tocmai acesta este unul din scopurile lucrării, si anume să prezinte principiile de functionare care definesc un analizor de cod static. Acest articol descrie structurile fundamentale care reprezintă baza unui analizor, precum si modurile de implementare ale acestora, atât din punct de vedere teoretic, cât si din punct de vedere a codului. Unul din beneficiile care survin la implementarea unui analizor de cod static este numărul redus de tehnologii necesare implementării. La nivel initial, abordarea unui inginer care încearcă să dezvolte o uneltă asemănătoare este strict algoritmică - practică încearcă să găsească solutii pentru implementarea mecanismelor de analiză a codului. Java a fost limbajul de programare ales pentru implementare si toate solutiile prezentate în acest raport sunt în corespondentă directă cu Java. Acest raport are drept scop enuntarea problemelor care reprezintă premisele dezvoltării unei unelte de analiză statică a codului, stadiul curent de dezvoltare, rezultatele cercetării, precum si determinarea solutiilor.
Static code analysis tools are as essential, as they are uncharted in the modern world of software engineering. They are used more and more by software developers regardless of the magnitude of the project. Yet, a very small number of engineers do actually know how such a magnificient tool works under the hood. This is one of the purposes of the following thesis, namely to expose the principles that define a static code analyzer. The article describes the fundamental structures that represent the basis of the analyzer, as well as describing a few solutions to implement these structures, theoretically and code-wise. One of the benefits a developer may find while implementing an analysis tool is that not a lot of technologies are used during the process. At inception level, the approach taken by an engineer trying to develop such a tool is strictly algorithmic - basically trying to find different algorithms to create the mechanics of the analyzer. Java was the language of choice when it came to implementation and all the solutions exposed in this paper will be in connection with Java code. This report will guide you through the problems that acted as premises for building static code analysis tools, the actual stage of development, the research results and will guide you through the solution as well.