Specifying and Detecting Behavioral Changes in Source Code Using Abstract Syntax Tree Differencing

During the development of a software, its source code is continuously being modified. Even after the deployment, the maintenance work still involves changing the source code. Some of the modification performed on the source code is rather meaningless, while others might cause some critical behavioral changes. To help understand the modification, we can distinguish the behavioral changes and ease the tedious work. Our approach focuses on eliminating two kinds of changes: the unessential changes and the behavioral-unrelated changes, to achieve a better change detection result.