Development

Accessing the GIT Repository

We use the revision control system git to develop Joern. If you want to participate in development or test the development version, you can clone the git repository by issuing the following command:

git clone https://github.com/fabsx00/joern.git

Optionally, change to the branch of interest. For example, to test the development version, issue the following:

git checkout dev

If you want to report issues or suggest new features, please do so via https://github.com/fabsx00/joern . For fixes, please fork the repository and issue a pull request or alternatively send a diff to the developers by mail.

Modifying Grammar Definitions

When building Joern, pre-generated versions of the parsers will be used by default. This is fine in most cases, however, if you want to make changes to the grammar definition files, you will need to regenerate parsers using the antlr4 tool. For this purpose, it is highly recommended to use the optimized version of ANTLR4 to gain maximum performance.

To build the optimized version of ANTLR4, do the following:

git clone https://github.com/sharwell/antlr4/
cd antlr4
mvn -N install
mvn -DskipTests=true -Dgpg.skip=true -Psonatype-oss-release -Djava6.home=$PATH_TO_JRE install

If the last step gives you an error, try building without -Psonatype-oss-release.

mvn -DskipTests=true -Dgpg.skip=true -Djava6.home=$PATH_TO_JRE install

Next, copy the antlr4 tool and runtime to the following locations:

cp tool/target/antlr4-$VERSION-complete.jar $JOERN/
cp runtime/Java/target/antlr4-runtime-$VERSION-SNAPSHOT.jar $JOERN/lib

where $JOERN is the directory containing the $JOERN installation.

Parsers can then be regenerated by executing the script $JOERN/genParsers.sh.