Browse Prior Art Database

Intelligent Source Code Diff Using Abstract Operations Along With Line Level Comparison.

IP.com Disclosure Number: IPCOM000235750D
Publication Date: 2014-Mar-25
Document File: 2 page(s) / 48K

Publishing Venue

The IP.com Prior Art Database

Abstract

Conventional source code diff tools work by treating the code as a list of lines of text. The diff result is then presented based on a point in time comparison between the files. With the complexity of operations offered by current IDEs a developer can easily produce a diff report which lists updates to many files. In this case often a lot of the changes are low impact updates to files which means that the important changes can easily be missed. This problem can be exacerbated if a diff represents a collection of changes across a code base. The described idea proposes a novel way of subtracting knock-on changes from the files before displaying the actual changes when comparing two sets of files.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 55% of the total text.

Page 01 of 2

Intelligent Source Code Diff Using Abstract Operations Along With Line Level Comparison.

In an example of the problem solved by this system, a large package of files is moved, then one of the files contained in the moved package is updated with an important change. In this case the diff of the change would list all of the files in the moved package along side the individual files updates. To a developer who is looking at this change set the level of noise, i.e. the incidental changes from the package move, may cause the important change to be missed.

    There are a large number of tools which exist today to compare source code in more intelligent, or more useful, ways. Some examples are: http://www.semanticdesigns.com/Products/SmartDifferencer/ http://javadiff.cvs.sourceforge.net/*checkout*/javadiff/jdiff/doc/JDiffArticle.pdf http://www.inf.unibz.it/įsucci/publications/images/amodeltoidentifyrefactoringeffortd uringmaintenancebyminingsourcecoderepositories.pdf http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.22.8314&rep=rep1&type= pdf

However, none of these use the history of a developer's actions as a factor

within producing the differences between source files.

    The solution disclosed is to collect information about individual changes that affect multiple places in the source code (refactorings) storing the core change (e.g. renaming a class) and the knock on changes (e.g. imports in other classes). When the diff is requested by the user, the new component will consider both the traditional diff of the files and the collected data of the refactorings. It will then take the traditional d...