Static analysis tools in software development
No Thumbnail Available
URL
Journal Title
Journal ISSN
Volume Title
School of Science |
Master's thesis
Checking the digitized thesis and permission for publishing
Instructions for the author
Instructions for the author
Authors
Date
2010
Major/Subject
Informaatiotekniikka
Mcode
T-115
Degree programme
Language
en
Pages
53
Series
Abstract
Static code analysis comprises techniques which statically examine a piece of computer program code and make inferences about its dynamic, run-time behaviour. Static analysis methods have a wide range of applications in software quality assurance. A significant amount of these are tools which can be used by software developers to test and check their code during the implementation. This thesis gives an overview of automatic code analysis techniques, with focus on static analysis methods and the use of them in assistance of software development. A review is made on the current supply of static analysis tools as well as experiences and research on the usefulness of this kind of methods and tools in software development. Finally, a case study is carried out with two automatic analysis tools attached to a Continuous Integration server used in a commercial software development process. The benefits and shortcomings of the tools are assessed, and suggestions for future development are given. The most important results of the study include:. 1. Static code analysis can be a useful tool when used wisely. The results of automated analysis should not be taken without critique, but common sense should be used. 2. Static analysis is most efficient when applied regularly on all parts of a code base from the very beginning of its development. When analysis runs are started on a code base with long history, the overwhelming number of warnings issued makes it difficult to find a starting point for making improvements. 3. Static code analysis should be made as automated and easy-to-use as possible. This involves making the analyses run as a part of the Continuous Integration process and send direct feedback to developers whose recent code changes have deteriorated the code.Staattinen koodianalyysi käsittää erilaisia tekniikoita, jotka tutkivat ohjelmakoodia staattisesti ja tekevät sen pohjalta päätelmiä koodin dynaamisesta ei ajonaikaisesta käyttäytymisestä. Staattisilla analyysimenetelmillä on laaja valikoima sovellutuksia ohjelmistojen laadunvarmistuksessa. Merkittävä osa näistä on työkaluja, joilla ohjelmistokehittäjät voivat testata ja tarkistaa koodinsa ominaisuuksia sen toteutuksen aikana. Tämä diplomityö antaa yleiskuvan automaattisen koodianalyysin tekniikoista, painottuen staattisiin analyysimenetelmiin ja niiden käyttöön ohjelmistokehityksen apuna. Työssä luodaan katsaus staattisen analyysin työkalujen tämänhetkiseen tarjontaan samoin kuin erilaisiin kokemuksiin ja tutkimustuloksiin kyseisten menetelmien ja työkalujen hyödyllisyydestä. Lopuksi kuvataan tapaustutkimus, jossa kaksi automaattista analysaattoria liitettiin kaupallisessa ohjelmistokehitysprojektissa käytössä olevaan jatkuvan integraation (Continuous Integration) palvelimeen. Työkalujen etuja ja puutteita arvioidaan, ja tehdään ehdotuksia jatkokehityksestä. Tutkielman tärkeimpiä tuloksia ovat:. 1. Staattinen koodianalyysi voi olla hyödyllinen apuneuvo järkevästi käytettynä. Automaattianalyysin tuloksia ei pidä ottaa kritiikittä vaan käyttää myös tervettä järkeä. 2. Staattinen analyysi on tehokkainta, kun sitä sovelletaan säännöllisesti koko koodikantaan sen kehityksen alusta alkaen. Kun analyyseja aletaan ajaa koodikannassa, jolla on jo pitkä historia, työkalun antamien varoitusten valtava määrä tekee hankalaksi päättää, mistä aloittaa korjausten tekeminen. 3. Staattinen koodianalyysi tulisi toteuttaa mahdollisimman automatisoituna ja helppokäyttöisenä. Tämä tarkoittaa esimerkiksi analyysiajojen sulauttamista osaksi jatkuvan integraation prosessia ja suoran palautteen automaattista lähettämistä ohjelmoijille, joiden äskeiset koodimuutokset ovat huonontaneet koodia.Description
Supervisor
Simula, OlliThesis advisor
Seppänen, JukkaKeywords
software, ohjelmistot, software development, ohjelmistokehitys, software quality, ohjelmiston laatu, static analysis, staattinen analyysi, program analysis, ohjelma-analyysi