Logical Segmentation of Source Code Jacob Dormuth, Ben Gelman, Jessica Moore, David Slater Machine Learning Group Two Six Labs Arlington, Virginia, United States E-mail: fjacob.dormuth, ben.gelman, jessica.moore,
[email protected] Abstract identifying where to generate automatic comments, and lo- cating useful sub-function boundaries for bug detection. Many software analysis methods have come to rely on Current approaches to segmentation do not intentionally machine learning approaches. Code segmentation - the pro- capture logical content that could improve its usefulness to cess of decomposing source code into meaningful blocks - the aforementioned problems. Traditionally, code segmen- can augment these methods by featurizing code, reducing tation has been done at a syntactic level. This means that noise, and limiting the problem space. Traditionally, code language-specific syntax, such as the closing curly brace of segmentation has been done using syntactic cues; current a class or function, is the indicator for a segment. Although approaches do not intentionally capture logical content. We this method is conceptually simple, the resulting segments develop a novel deep learning approach to generate logical do not intentionally take into account semantic information. code segments regardless of the language or syntactic cor- Syntactic structures in natural language, such as sentences rectness of the code. Due to the lack of logically segmented and paragraphs, are generally also indicators of semantic source code, we introduce a unique data set construction separation. In other words, two different paragraphs likely technique to approximate ground truth for logically seg- capture two logically separate ideas, and it is simple to de- mented code.