Thesis Details
Applying Code Change Patterns during Analysis of Program Equivalence
The goal of this thesis is to propose a static analysis method for recognition of code change patterns describing recurrent changes between different versions of low-level code. The thesis proposes an encoding method of patterns, which uses the LLVM intermediate representation, and a pattern matching algorithm based on gradual comparison of instructions according to their control flow. The proposed analysis has been implemented as an extension of DiffKemp, a tool for analysing semantic differences between versions of large C projects. Results of experiments conducted on three pairs of past versions of the Linux kernel show that the extension is able to eliminate a substantial amount of false-positive or generally undesirable differences from the output of DiffKemp, which would otherwise require manual inspection.
DiffKemp, SimpLL, LLVM, Clang, GNU/Linux kernel, code change pattern matching, code change pattern representation, subgraph isomorphism, semantic difference analysis, refactoring patterns, LLVM metadata, LLVM intermediate representation, control-flow graph, elimination of false-positive reports
Kořenek Jan, doc. Ing., Ph.D. (DCSY FIT BUT), člen
Peringer Petr, Dr. Ing. (DITS FIT BUT), člen
Ryšavý Ondřej, doc. Ing., Ph.D. (DIFS FIT BUT), člen
@bachelorsthesis{FITBT24037, author = "Petr \v{S}illing", type = "Bachelor's thesis", title = "Applying Code Change Patterns during Analysis of Program Equivalence", school = "Brno University of Technology, Faculty of Information Technology", year = 2021, location = "Brno, CZ", language = "english", url = "https://www.fit.vut.cz/study/thesis/24037/" }