Skip to content

Add_tools

FoelliX edited this page Nov 25, 2021 · 4 revisions

Add tools

In order to add a new analysis tool, preprocessor, operator or converter to the AQL-System, its configuration has to be adapted (See the configuration tutorial). Adding an analysis tool may require a new converter to be added as well. To do so, three options are available:

1. Existing Converter

If one of the converters implemented in the AQL-System fits your needs. You just have to assign the associated toolname for the analysis tool in the configuration. Currently the following converters are available:

  • Amandroid
  • DIALDroid (not supported from version 2.0.0 onwards - If you plan to use this converter, please adapt data/converter/dialdroid_config.properties)
  • DidFail
  • DroidSafe
  • FlowDroid
  • IC3
  • IccTA
  • PAndA2

(the provided tool's version may decide which converter exactly is used. For example, there are two FlowDroid converters available one for FlowDroid >2.5.0 and one for earlier versions.)

2. Add new converter (internal)

Implement your own converter and compile the AQL-System on your own (See the install & compile tutorial).

  1. Include your converter by implementing the interface IConverter
  2. Add it to the ConverterRegistry inside the de.foellix.aql.converter package by adding the following line (after Line 41 in ConverterRegistry.java):
this.converters.add(
  new Identifier(
    new DefaultConverter("AwesomeDroid", AwesomeDroidConverter.class)
  , "AwesomeDroid")
);

(In this example AwesomeDroid refers to the toolname of the tool you want to add, which is defined in the configuration. The associated converter is AwesomeDroidConverter.)

3. Add new converter (external)

  1. Develop your own converter...
  • taking the result file of the tool you want to add as input
  • and generating an AQL-Answer as output.
  1. Specify this converter in the configuration (See the configuration tutorial).
  • Make sure to assign the toolname of all tools, for which the converter should be used, in <questions>.
    (e.g. <questions>AwesomeDroid1, AwesomeDroid2</questions>)

Clone this wiki locally