Modelowanie jakości kodu źródłowego na podstawie danych gromadzonych
w systemach kontroli wersji
W ramach rozprawy zbudowano jakościowy model kodu źródłowego (Source Code Quality Model - SCQM), którego zadaniem jest automatyczna klasyfikacja jakości kodu. Wykorzystano w tym celu metody uczenia maszynowego znane z przetwarzania języka naturalnego. Rozprawa wykazuje, że jakościowy model kodu źródłowego zrealizowany na podstawie dwukierunkowej rekurencyjnej sieci neuronowej cechuje większa trafność w rozpoznawaniu jakości kodu źródłowego niż jakiekolwiek z dostępnych obecnie rozwiązań. W przeprowadzonej ewaluacji zbudowany model poprawnie sklasyfikował jakość kodu dla 79% przykładów, podczas gdy druga pod względem skuteczności istniejąca metryka osiągnęła jedynie 57%. Aby osiągnąć ten cel, wybrano ponad 15000 zmian wprowadzających refaktoryzację do 350 projektów tworzonych w języku Java. Posłużyły one do zbudowania danych treningowych dla zaprojektowanego modelu, który został nauczony subiektywnego pojęcia kodu źródłowego wysokiej jakości. Ponadto, przeprowadzono badanie wśród programistów mające na celu zebrać opinie o jakości przykładów kodu źródłowego. W badaniu wzięło udział ponad 500 programistów, oddając ponad 5000 głosów i klasyfikując w ten sposób 645 przykładów refaktoryzacji. Zbiór tych refaktoryzacji został wykorzystany zarówno do trenowania jak i walidacji modelu. Zostały one także opublikowane jako jakościowy benchmark kodu źródłowego.
Source code quality modelling leveraging the data stored in version control
systems
The author of the thesis builds a Source Code Quality Model (SCQM) that classifies the quality of the source code. It leverages the machine learning methods commonly used in natural language processing. The thesis concludes that the model implemented on top of a bidirectional recurrent neural network reaches better accuracy in classifying the source code quality than currently available tools or metrics. An evaluation of the model results in detecting appropriate source code quality for 79% of examples. The second best compared solution succeeded in 57% only. This achievement has been preceded with a gathering of over 15000 source code changes that introduce refactorings to 350 Java open source projects. Collected samples have been used to build a training dataset for the designed model which has been taught an opinion based classification of the source code readability. Moreover, a subset of gathered refactoring samples has been further categorized in a source code quality survey in order to further improve the total accuracy of the model. More than 500 programmers took part in the experiment, leaving over 5000 opinions about the presented source code examples. This enabled the aturhot to build a source code quality benchmark out of the 645 samples that have been precisely classified by humans. The benchmark has been used to both training and validation of the model.