2016 19th Conference of Open Innovations Association (FRUCT), 2016, pp.72-79
The complexity of software grows every year, and while there are many programming techniques and new languages that accommodate the need to provide high abstractions, still many languages that require attention to low-level details are in use as of yet In order to avoid tedious debugging which needs time that could be spent on dealing with high-level logic, static analysis of source code can be used to more efficiently find common problems. We have studied the process of creation of algorithms for static analysis tools by building a simple value range analysis mechanism, that is, a way to detect some cases of integers not matching a predicate involving arithmetic and comparison operations. This algorithm provides means to detect possible division by zero and integer overflow and is easily extended to find cases of out-of-bounds addressing of containers. While there is a multitude of value range analysis mechanisms that are more sophisticated by orders of magnitude, the works in which they are presented focus on the properties of the resulting tools such as estimated amount of false positives, performance, memory usage, or soundness. We, on the other hand, are going to present the process of extension of static analysis algorithm from ground up. An ad hoc programming language is developed in multiple stages to separate the creation of algorithm from numerous details of its implementation which would necessarily arise were we to build it on a real-world language.
Algorithm Design and Analysis ; Semantics ; Computer Languages ; Buildings ; Memory Management ; Software Algorithms ; Complexity Theory
View record in IEEE Xplore (Access to full text may be restricted)