Coder Social home page Coder Social logo

soot-oss / sootup Goto Github PK

View Code? Open in Web Editor NEW
558.0 558.0 68.0 166.36 MB

A new version of Soot with a completely overhauled architecture

Home Page: https://soot-oss.github.io/SootUp/

License: GNU Lesser General Public License v2.1

Java 99.81% ANTLR 0.12% Shell 0.04% HTML 0.03%
android bytecode call-graph dataflow-analysis java jimple program-analysis soot static-analysis static-code-analysis

sootup's People

Contributors

akshitad11 avatar anddann avatar atulpundir88 avatar bastihav avatar bhermann avatar cbruegg avatar dongjiehe avatar github-actions[bot] avatar hasitha1990 avatar jmpersch avatar jonasklauke avatar juliandolby avatar kadirayk avatar kaustubhkelkar avatar linghuiluo avatar liyw979 avatar marcusna avatar mbenz89 avatar michaelyoukeim avatar momo-not-emo avatar palaniappan1 avatar qilinpta avatar rajatkhanna1994 avatar reshmasobhanair avatar sahilagichani14 avatar shenjunjiekoda avatar stschott avatar swissiety avatar timbals avatar wangzun66 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sootup's Issues

Support Multi-Release Jar files

resources:
https://www.javaworld.com/article/3184029/java-language/java-9s-other-new-enhancements-part-4-multi-release-jar-files.html
https://www.baeldung.com/java-multi-release-jar

TODO

depends on #185 (java9 module loading)

Parameter: newest supported Java Version

  • ignore java versions <9 (according to spec)
  • select newest version lower equals given parameter down to base version

nice2have:

  • list existing version variants of a module
  • above list merged across all user specified modules

Rules for pull requests

  • Please branch from the develop branch and make sure your branch merged all changes from develop before submitting
  • Please write description of the pull request
  • Please link the associated Issue https://help.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue
  • Please keep the pull request as small as possible
  • Please keep the pull request with one intention (one feature)
  • Please commit stepwise
  • Please communicate with other people who are currently working on different branches before refactoring
  • Unless it is a working in progress pull request, please ensure all tests pass before you submit it

Tests fail

@anddann can you look why tests for java8 and java9 both are executed in test steps on the build server?

under either

mvn test -Dgroups="categories.Java8Test"

or

mvn test -Dgroups="categories.Java9Test"

all tests will be executed.

Checkstyle Plugin Reports different results

The current configuration of the checkstyle plugin in the pom.xml reports different results when using mvn clean compile, mvn checkstyle:check, or mvn checkstyle:checkstyle

Use FieldSignature in constructors instead of SootField

Please change this in class JInstanceFieldRef and JStaticFieldRef

for example: change public JStaticFieldRef(SootField field) to public JStaticFieldRef(IView view, FieldSignature field)

  • implement getField() methods like AbstractInvokeExpr.getMethod(), always query the field from the class in view.

  • delete the setters and make these two classes immutable.

please change this in jimple branch

Implement equality method with comparator callback in JimpleStmts

Jimple statements can be checked for structural equality by calling the EquivTo. equivTo method with another statement. The implementation is a tree traversal that checks the equivalence of each subtree. Nodes can be Locals or Values (maybe more). Currently, the structural equivalence of two locals is decided by checking their type and name for equality. This should further be the standard behavior.
Another equivTo method that takes a Comparator (or a similar callback) should be implemented to allow for arbitrary comparisons, e.g., only type of locals.

Why do we implement `Object.clone` in many classes?

A large number of classes in this project implement Object.clone(), especially the ones related to Jimple (such as JEqExp). However, it seems the only implementation that is used directly in the project is the one from PositionInfo.

The book Effective Java by Joshua Bloch (available here), who led the design of various Java features, gives some advice on the flaws of the method and its associated interface Cloneable starting on page 54 (Item 11: Override clone judiciously).

Hence I'm wondering why we have these implementations. If it turns out that there is no use case for them, I would propose to remove these implementations. Otherwise, depending on the use case, we could evaluate using a different mechanism with saner semantics.

Break apart Utils class

With PR #89, the Utils class will be containing lots of helper functions. Not all of them relate to each other, so the class should be broken apart into groups of related functions to aid discoverability.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.