A neat code differencing tool
Java GAP Ruby Other
Switch branches/tags
Clone or download
Latest commit bdd631b Jun 15, 2018
Permalink
Failed to load latest commit information.
benchmark fix serveral errorprone warnings Feb 1, 2018
client.diff improve dot diff Jun 15, 2018
client fix parsing property names from command line Apr 8, 2018
core added dot diff client Jun 15, 2018
dist add javaparser generator Apr 10, 2018
docker update docker image May 22, 2018
gen.antlr3-antlr Forggoten arguments to antlr3 lexers constructors May 18, 2017
gen.antlr3-json fix serveral errorprone warnings Feb 1, 2018
gen.antlr3-php Forggoten arguments to antlr3 lexers constructors May 18, 2017
gen.antlr3-r refactored antl3 plugins May 18, 2017
gen.antlr3-xml Forggoten arguments to antlr3 lexers constructors May 18, 2017
gen.antlr3 refactored antl3 plugins May 18, 2017
gen.antlr4-matlab/src/main/java/com/github/gumtreediff/gen/antlr4/matlab Test to remove reflections Feb 26, 2018
gen.c homogeneize property names Feb 14, 2018
gen.css bump ph-css version Apr 10, 2018
gen.javaparser add javaparser generator Apr 10, 2018
gen.jdt fix style Apr 10, 2018
gen.js bump rhino version Apr 10, 2018
gen.python part fix python generator line number May 22, 2018
gen.ruby fix serveral errorprone warnings Feb 1, 2018
gen.sax/src switched from maven to gradle. Nov 14, 2015
gen.srcml homogeneize property names Feb 14, 2018
gradle/wrapper make gradle wrapper executable Feb 5, 2018
.gitignore add antlr4 infrastructure Jan 29, 2018
.travis.yml fix travis dependencies Feb 5, 2018
.travis_native_dependencies.sh downgrade travis cgum dependency Feb 13, 2018
CHANGELOG.md add python support Feb 5, 2018
HEADER added license headers everywhere. Jul 2, 2015
LICENSE Initial commit Dec 4, 2013
README.md Update README.md May 22, 2018
Vagrantfile add vagrant file. Oct 18, 2016
build.gradle update checkstyle, set checkstyle severity to error, fix several chec… Mar 2, 2018
checkstyle_ignore.xml refactor and improve directory comparator view Dec 22, 2016
code-of-conduct.md add code of conduct [skip ci] Feb 7, 2018
gradlew update gradlew version Oct 3, 2017
gradlew.bat updated gradle wrapper version. Aug 29, 2016
gumtree_checkstyle.xml add javaparser generator Apr 10, 2018
settings.gradle add javaparser generator Apr 10, 2018

README.md

GumTree

Status

  • Master branch: Build Status Coverage Status
  • Develop branch: Build Status Coverage Status

Description

GumTree is a complete framework to deal with source code as trees and compute differences between them. It includes possibilities such as:

  • converting a source file into a language-agnostic tree format
  • export the produced trees in various formats
  • compute the differences between the trees
  • export these differences in various formats
  • visualize these differences graphically

Compared to classical code differencing tools, it has two important particularities:

  • it works on a tree structure rather than a text structure,
  • it can detect moved or renamed elements in addition of deleted and inserted elements.

Supported languages

We already deal with a wide range of languages: C, Java, JavaScript, Python, R, Ruby. Click here for more details about the language we support.

More languages are coming soon, if you want to help contact me.

Citing GumTree

We are researchers, therefore if you use GumTree in an academic work we would be really glad if you cite our seminal paper using the following bibtex:

@inproceedings{DBLP:conf/kbse/FalleriMBMM14,
  author    = {Jean{-}R{\'{e}}my Falleri and
               Flor{\'{e}}al Morandat and
               Xavier Blanc and
               Matias Martinez and
               Martin Monperrus},
  title     = {Fine-grained and accurate source code differencing},
  booktitle = {{ACM/IEEE} International Conference on Automated Software Engineering,
               {ASE} '14, Vasteras, Sweden - September 15 - 19, 2014},
  pages     = {313--324},
  year      = {2014},
  url       = {http://doi.acm.org/10.1145/2642937.2642982},
  doi       = {10.1145/2642937.2642982}
}

Documentation

To use GumTree, you can start by consulting the Getting Started page from our wiki.