Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc
See the codeJoern is a platform for analyzing source code, bytecode, and binary executables. It generates code property graphs (CPGs), a graph representation of code for cross-language code analysis. Code property graphs are stored in a custom graph database. This allows code to be mined using search queries formulated in a Scala-based domain-specific query language. Joern is developed with the goal of providing a useful tool for vulnerability discovery and research in static program analysis.
Website: https://joern.io
Documentation: https://docs.joern.io/
Specification: https://cpg.joern.io
overflowdb.traversal.Traversal class. This change is not completely backwards compatible. See here for a detailed writeup.wget https://github.com/joernio/joern/releases/latest/download/joern-install.sh
chmod +x ./joern-install.sh
sudo ./joern-install.sh
joern
██╗ ██████╗ ███████╗██████╗ ███╗ ██╗
██║██╔═══██╗██╔════╝██╔══██╗████╗ ██║
██║██║ ██║█████╗ ██████╔╝██╔██╗ ██║
██ ██║██║ ██║██╔══╝ ██╔══██╗██║╚██╗██║
╚█████╔╝╚██████╔╝███████╗██║ ██║██║ ╚████║
╚════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝
Version: 2.0.1
Type `help` to begin
joern>
If the installation script fails for any reason, try
./joern-install --interactive
Unit tests:
sbt test
Integration tests:
sbt joerncli/stage querydb/createDistribution
python -m pip install requests pexpect # wexpect on Windows
python -u ./testDistro.py
There is an experimental partial Bazel build setup. Check bazel.md for further details.
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern:master joern
To run joern in server mode:
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern:master joern --server
Almalinux 9 requires the CPU to support SSE4.2. For kvm64 VM use the Almalinux 8 version instead.
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern-alma8:master joern
A new release is created automatically once per day. Contributers can also manually run the release workflow if they need the release sooner.
Each release publishes platform-specific distribution zips:
joern-cli-linux-x86_64.zipjoern-cli-linux-arm64.zipjoern-cli-macos-x86_64.zipjoern-cli-macos-arm64.zipjoern-cli-windows-x86_64.zipjoern-cli-windows-arm64.zipjoern-install.sh detects the current platform automatically and downloads the correct zip. Windows users should download the appropriate zip directly from the releases page and extract it manually.
Thank you for taking time to contribute to Joern! Here are a few guidelines to ensure your pull request will get merged as soon as possible:
[javasrc2cpg] Addition Operator Fix.sbt scalafmt Test/scalafmtsbt in your local joern repository, run compile and keep it open - this will allow us to use the BSP build in the next stepBSP project (i.e. not sbt project!)Build -> build project or run a testms-vscode-remote.remote-containersFolder contains a Dev Container configuration file. Reopen to folder to develop in a container.. Select the Reopen in Container button to reopen the folder in the container created by the .devcontainer/Dockerfile file.Ctrl + Shift + P then select Dev Containers: Reopen in ContainerCtrl + Shift + P then select Metals: Import buildMetals: Import build succeeds, you are ready to start writing code for JoernQuick way to develop and test QueryDB:
sbt stage
./querydb-install.sh
./joern-scan --list-query-names
The last command prints all available queries - add your own in querydb, run the above commands again to see that your query got deployed. More details in the separate querydb readme
(top 30 of 82)
Scala
98.0%
Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc
See the codeJoern is a platform for analyzing source code, bytecode, and binary executables. It generates code property graphs (CPGs), a graph representation of code for cross-language code analysis. Code property graphs are stored in a custom graph database. This allows code to be mined using search queries formulated in a Scala-based domain-specific query language. Joern is developed with the goal of providing a useful tool for vulnerability discovery and research in static program analysis.
Website: https://joern.io
Documentation: https://docs.joern.io/
Specification: https://cpg.joern.io
overflowdb.traversal.Traversal class. This change is not completely backwards compatible. See here for a detailed writeup.wget https://github.com/joernio/joern/releases/latest/download/joern-install.sh
chmod +x ./joern-install.sh
sudo ./joern-install.sh
joern
██╗ ██████╗ ███████╗██████╗ ███╗ ██╗
██║██╔═══██╗██╔════╝██╔══██╗████╗ ██║
██║██║ ██║█████╗ ██████╔╝██╔██╗ ██║
██ ██║██║ ██║██╔══╝ ██╔══██╗██║╚██╗██║
╚█████╔╝╚██████╔╝███████╗██║ ██║██║ ╚████║
╚════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝
Version: 2.0.1
Type `help` to begin
joern>
If the installation script fails for any reason, try
./joern-install --interactive
Unit tests:
sbt test
Integration tests:
sbt joerncli/stage querydb/createDistribution
python -m pip install requests pexpect # wexpect on Windows
python -u ./testDistro.py
There is an experimental partial Bazel build setup. Check bazel.md for further details.
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern:master joern
To run joern in server mode:
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern:master joern --server
Almalinux 9 requires the CPU to support SSE4.2. For kvm64 VM use the Almalinux 8 version instead.
docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern-alma8:master joern
A new release is created automatically once per day. Contributers can also manually run the release workflow if they need the release sooner.
Each release publishes platform-specific distribution zips:
joern-cli-linux-x86_64.zipjoern-cli-linux-arm64.zipjoern-cli-macos-x86_64.zipjoern-cli-macos-arm64.zipjoern-cli-windows-x86_64.zipjoern-cli-windows-arm64.zipjoern-install.sh detects the current platform automatically and downloads the correct zip. Windows users should download the appropriate zip directly from the releases page and extract it manually.
Thank you for taking time to contribute to Joern! Here are a few guidelines to ensure your pull request will get merged as soon as possible:
[javasrc2cpg] Addition Operator Fix.sbt scalafmt Test/scalafmtsbt in your local joern repository, run compile and keep it open - this will allow us to use the BSP build in the next stepBSP project (i.e. not sbt project!)Build -> build project or run a testms-vscode-remote.remote-containersFolder contains a Dev Container configuration file. Reopen to folder to develop in a container.. Select the Reopen in Container button to reopen the folder in the container created by the .devcontainer/Dockerfile file.Ctrl + Shift + P then select Dev Containers: Reopen in ContainerCtrl + Shift + P then select Metals: Import buildMetals: Import build succeeds, you are ready to start writing code for JoernQuick way to develop and test QueryDB:
sbt stage
./querydb-install.sh
./joern-scan --list-query-names
The last command prints all available queries - add your own in querydb, run the above commands again to see that your query got deployed. More details in the separate querydb readme
(top 30 of 82)
Scala
98.0%