Skip to content
A neat code differencing tool
Java GAP Ruby Other
Branch: develop
Clone or download

Latest commit

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmark new diff utility methods and added doc on most important API classes Apr 5, 2020
client.diff activate syntax colouring in monaco diff Apr 8, 2020
client new diff utility methods and added doc on most important API classes Apr 5, 2020
core new diff utility methods and added doc on most important API classes Apr 5, 2020
dist no longer use deprecated archiveName property in gradle. Feb 26, 2019
doc add screenshots Apr 2, 2020
docker Update README.md Apr 6, 2020
gen.antlr3-antlr
gen.antlr3-json fix -m option and add gumtree simple matcher Jun 14, 2019
gen.antlr3-php Forggoten arguments to antlr3 lexers constructors May 18, 2017
gen.antlr3-r inline metrics in tree Apr 18, 2019
gen.antlr3-xml Rename Symbol to type Apr 18, 2019
gen.antlr3 Rename Symbol to type Apr 18, 2019
gen.antlr4-matlab/src/main/java/com/github/gumtreediff/gen/antlr4/matlab Test to remove reflections Feb 26, 2018
gen.antlr4 Rename Symbol to type Apr 18, 2019
gen.c inline metrics in tree Apr 18, 2019
gen.css update ph-css Apr 2, 2020
gen.javaparser inline metrics in tree Apr 18, 2019
gen.jdt fix imports of abstractjdtgenerator Apr 6, 2020
gen.js update rhino version Apr 2, 2020
gen.python update python parser generator now that python parser delivers the ra… Oct 3, 2019
gen.ruby inline metrics in tree Apr 18, 2019
gen.srcml fix srcml tests to work with srcml 1.0 Feb 20, 2020
gradle/wrapper update gradle wrapper Mar 31, 2020
.dockerignore add .git to .dockerignore Apr 6, 2020
.gitignore
.travis.yml travis uses openejdk11 Feb 20, 2020
.travis_native_dependencies.sh improve container infrastructure for travis and docker Feb 20, 2020
CHANGELOG.md integrate monaco native diff editor Apr 2, 2020
HEADER added license headers everywhere. Jul 2, 2015
LICENSE Initial commit Dec 4, 2013
README.md Update README.md [ci-skip] Apr 2, 2020
Vagrantfile add vagrant file. Oct 18, 2016
build.gradle increased version number Apr 2, 2020
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 use new gradle and jmh version Nov 13, 2019
gradlew.bat upgrade gradle wrapper Feb 20, 2020
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.

Documentation

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

Screenshots

The directory diff viewer

Directory comparator view

The file diff viewer

Diff view

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}
}
You can’t perform that action at this time.