All Projects → themaplelab → averroes

themaplelab / averroes

Licence: EPL-2.0 License
Java bytecode generator for sound and precise partial program analysis

Programming Languages

java
68154 projects - #9 most used programming language
scala
5932 projects

Projects that are alternatives of or similar to averroes

SimpleOfficeReader
A simple office file reader can extract content and summary information from .doc,.docx,.ppt,.pptx files without Microsoft Office or interop.
Stars: ✭ 54 (+184.21%)
Mutual labels:  summary
errorprone-slf4j
An Error Prone plugin for SLF4J
Stars: ✭ 26 (+36.84%)
Mutual labels:  static-analysis
webpack-image-placeholder-loader
Generate a solid color image as placeholder
Stars: ✭ 24 (+26.32%)
Mutual labels:  placeholder
clair-cicd
Making CoreOS' Clair easily work in CI/CD pipelines
Stars: ✭ 27 (+42.11%)
Mutual labels:  static-analysis
TextInputLayout
The objective of this code is to guide you to create login screen with TextInputLayout in iOS app.
Stars: ✭ 30 (+57.89%)
Mutual labels:  placeholder
opem
OPEM (Open Source PEM Fuel Cell Simulation Tool)
Stars: ✭ 107 (+463.16%)
Mutual labels:  static-analysis
placeholders
SVG-based placeholders in web components
Stars: ✭ 28 (+47.37%)
Mutual labels:  placeholder
codeclimate-eslint
Code Climate Engine for ESLint
Stars: ✭ 86 (+352.63%)
Mutual labels:  static-analysis
i3blocks-modules
Custom modules for i3blocks status bar
Stars: ✭ 36 (+89.47%)
Mutual labels:  placeholder
sonar-gherkin-plugin
SonarQube Cucumber Gherkin Analyzer
Stars: ✭ 33 (+73.68%)
Mutual labels:  static-analysis
survey-analytics
SurveyJS Analytics Pack
Stars: ✭ 56 (+194.74%)
Mutual labels:  summary
resumen-estudios-git
Resumen estudios Git
Stars: ✭ 28 (+47.37%)
Mutual labels:  summary
SixtyPical
A 6502-oriented low-level programming language supporting advanced static analysis
Stars: ✭ 25 (+31.58%)
Mutual labels:  static-analysis
luacheck
A tool for linting and static analysis of Lua code.
Stars: ✭ 139 (+631.58%)
Mutual labels:  static-analysis
python-lorem
🐍 Python library for the generation of random text that looks like Latin
Stars: ✭ 19 (+0%)
Mutual labels:  placeholder
BEFA-Library
High-level library for executable binary file analysis
Stars: ✭ 14 (-26.32%)
Mutual labels:  static-analysis
maloss
Towards Measuring Supply Chain Attacks on Package Managers for Interpreted Languages
Stars: ✭ 46 (+142.11%)
Mutual labels:  static-analysis
pyc2bytecode
A Python Bytecode Disassembler helping reverse engineers in dissecting Python binaries by disassembling and analyzing the compiled python byte-code(.pyc) files across all python versions (including Python 3.10.*)
Stars: ✭ 70 (+268.42%)
Mutual labels:  static-analysis
blurhash.cr
A pure Crystal implementation of BlurHash algorithm
Stars: ✭ 13 (-31.58%)
Mutual labels:  placeholder
Debt-Manager
A personal app to store people that owe you money or you owe money to. "Mo Money Mo Problems" 🎵 - The Notorious B.I.G. 😎
Stars: ✭ 22 (+15.79%)
Mutual labels:  static-analysis

Averroes logo

Averroes is Java bytecode generator that enables sound and precise analysis of the application part of a program without analyzing its library dependencies. It achieves that by generating a placeholder/stub library for those dependencies that models the original library code with respect to:

  • class instantiations
  • callbacks to application methods
  • handled exceptions (caught or thrown)
  • field and array accesses

Dependencies

The code bas for Averroes is in the form of an Eclipse project. It is setup with the following dependencies:

  • Project dependencies (needs to be available in your Eclipse workspace)
    • Soot: you need to check out the develop branch
    • Probe: you need to check out the master branch
  • Library dependencies (ships with Averroes)

Build

Averroes uses Gradle as its build system. To build a fat JAR that includes all the dependencies, you need to run ./gradlew fatJar. This command will generate averroes-all-<version>.jar in build/libs, which you can use to run Averroes. If you'd rather generate a JAR file for Averroes itself, simply use ./gradlew jar.

Usage

jar -jar averroes.jar <required parameters> [optional parameters]

where required parameters include:
 -a,--application-jars <path>              A list of the application JAR
                                           files separated by path separator.

 -j,--java-runtime-directory <directory>   The directory that contains the
                                           Java runtime environment that
                                           Averroes should model.

 -m,--main-class <class>                   The main class that runs the
                                           application when the program
                                           executes.

 -o,--output-directory <directory>         The directory to which Averroes
                                           will write any output files/folders.

 -r,--application-regex <regex>            A list of regular expressions
                                           for application packages or classes
                                           separated by path separator. Use
                                           <package_name>.* to include classes
                                           in a package, <package_name>.** to
                                           include classes in a package and all
                                           its subpackages, ** to include the
                                           default package, <full_class_name> to
                                           include a single class.

and optional parameters include:
 -d,--dynamic-classes-file <file>          A file that contains a list of
                                           classes that are loaded
                                           dynamically by Averroes (e.g.,
                                           classes instantiated through
                                           reflection).

 -h,--help                                 Prints out this help message.

 -l,--library-jars <path>                  A list of the JAR files for
                                           library dependencies separated
                                           by path separator.

 -t,--tamiflex-facts-file <file>           A file that contains reflection
                                           facts generated for this application
                                           in the TamiFlex format.

Output

After running averroes on some input program, the output directory directory should contain the following:

  • averroes-lib-class.jar: the main averroes library class for the input program.
  • placeholder-lib.jar: the stubs averroes generates for the library classes of the given input program.
  • organized-app.jar: the original application code of the input program as is (i.e., not altered by averroes in any way).
  • organized-lib.jar: the original library code of the input program as is (i.e., not altered by averroes in any way).
  • classes: a directory that contains the class files that averroes generates.

The JAR files averroes-lib-class.jar and placeholder-lib.jar together form the placeholder library generated by averroes. So for example, if you would like to generate the call graph for a that input program using averroes, you need to supply a whole-program analysis tool (e.g., Soot) with 2 JAR files as the library: averroes-lib-class.jar and placeholder-lib.jar, and JAR file as the application: organized-app.jar.

License

Averroes is available as Open Source under the Eclipse Public License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].