Soot - A Java optimization framework
Java TeX HTML XSLT Shell Limbo
Latest commit 1afc5f5 Feb 22, 2017 @mbenz89 mbenz89 committed on GitHub Update pom.xml
Soot Version changed to 3.0.0
Permalink
Failed to load latest commit information.
doc added the function to automatically fix wrong staticness Dec 22, 2016
eclipse added the function to automatically fix wrong staticness Dec 22, 2016
generated changed the DuplicateCatchAllTrapRemover to be executed as part of th… Feb 15, 2017
libs fix for the updated library files Nov 18, 2016
src changed the DuplicateCatchAllTrapRemover to be executed as part of th… Feb 15, 2017
systests - new test case for string constants wih null literals Nov 4, 2005
tests ignore a test case for stuff that is not yet supported Oct 26, 2016
tutorial fixing documentation issue, fixes #359 Apr 10, 2015
.classpath upgraded the dexlib version, and fixed a severe bug in the dex loader… Nov 18, 2016
.gitignore Added descriptions to build.xml tasks, added Eclipse .settings to .gi… Feb 7, 2016
.project project name = soot Dec 14, 2012
CHANGES CHANGES Sep 18, 2014
COPYING-LESSER.txt Changed from Library General Public License 2 to Lesser General Publi… Jun 3, 2003
README.coding_rules Update README.coding_rules to reflect switch from make to ant, Jun 20, 2004
README.md Update README.md Feb 22, 2017
Release_Notice No commit message Jan 22, 2012
TODO - made nop eliminator run before jb phase for java to jimple Nov 17, 2003
TODO.txt updated web page; Jan 22, 2012
ant.settings.jenkins upgraded the dexlib version, and fixed a severe bug in the dex loader… Nov 18, 2016
ant.settings.template upgraded the dexlib version, and fixed a severe bug in the dex loader… Nov 18, 2016
background6.gif prcs 1.2.0.dev.4: Oct 4, 2000
build.xml bumped up the source and target versions to Java 1.7. Nov 18, 2016
credits docs Aug 18, 2014
index.html git Jun 22, 2012
ivy.xml Added ant task to publish soot to local maven repo using ivy Jan 16, 2016
ivysettings.xml Added ant task to publish soot to local maven repo using ivy Jan 16, 2016
local-nightly-build Add self-contained nightly build script "local-nightly-build". Jan 1, 2015
nightly No commit message Jan 22, 2012
pom.xml Update pom.xml Feb 22, 2017
soot.psf Corrected github project references in soot.psf Apr 1, 2014
soot_download.html No commit message Jan 22, 2012
soot_in_eclipse_howto.html Improve the wording of the previous change Apr 5, 2006

README.md

Build Status

Please help us improve Soot!

You are using Soot and would like to help us support it in the future? Then please support us by filling out this little web form.

That way you can help us in two ways:

  • By letting us know how we can improve Soot you can directly help us prioritize newly planned features.
  • By stating your name and affiliation you help us showcasing Soot’s large user base. Thanks!

What is Soot?

Soot is a Java optimization framework. It provides four intermediate representations for analyzing and transforming Java bytecode:

  • Baf: a streamlined representation of bytecode which is simple to manipulate.
  • Jimple: a typed 3-address intermediate representation suitable for optimization.
  • Shimple: an SSA variation of Jimple.
  • Grimp: an aggregated version of Jimple suitable for decompilation and code inspection.

See http://www.sable.mcgill.ca/soot/ for details.

How do I get started with Soot?

We have some documentation on Soot in the wiki and also a large range of tutorials on Soot.

Including Soot in your Project

A Soot "release" is currently built for each commit to the develop branch. You can include Soot as a dependency via Maven, Gradle, SBT, etc using the following coordinates:

<dependencies>
  <dependency>
    <groupId>ca.mcgill.sable</groupId>
    <artifactId>soot</artifactId>
    <version>3.0.0-SNAPSHOT</version>
  </dependency>
</dependencies>
<repositories>
  <repository>
    <id>soot-snapshot</id>
    <name>soot snapshots</name>
    <url>http://soot-build.cs.uni-paderborn.de/nexus/repository/soot-snapshot/</url>
  </repository>
</repositories> 

How do I obtain the nightly builds

Note that the nightly build server has moved

Nightly builds of soot can be obtained from nightly build. The "soot-trunk.jar" file is an all-in-one file that also contains all the required libraries. The "sootclasses-trunk.jar" file contains only Soot, allowing you to use manually pick dependencies as you need them.

About Soot's source code

Soot follows the git-flow convention. Releases and hotfixes are maintained in the master branch. Development happens in the develop branch. To catch the bleeding edge of Soot, check out the latter. You will also need the projects jasmin and heros. In case of any questions, please consult the Soot mailing list at: http://www.sable.mcgill.ca/mailman/listinfo/soot-list/