joernio / joern
git clone https://github.com/joernio/joern.git
v4.0.661 · today
🔥 on GitHub Trending today
Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc
+2
stars, 24h · #498
—
stars, 7 days
+86
stars, 30 days · #2,665
3.6k
★ total
470
forks · 299 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageScala
LicenseApache-2.0
Created2019-03-14 (7y ago)
Last pushtoday
Watchers40
OwnerOrganization
Seen on GitHub Trending
- 2026-10-20 — #7 daily in scala · +2 ★
- 2026-10-20 — #15 monthly in scala · +86 ★
GitHub topics
binaryccode-analysiscode-browsercode-property-graphcontrolflowcpgcppdataflowfuzzy-parsingghidragraphjavajavabytecodejavascriptllvmquery-languagescalasyntax-tree
Links
- GitHub: github.com/joernio/joern
- Homepage: https://joern.io/
- Releases · Issues · Hacker News mentions
README excerpt
Joern - The Bug Hunter's Workbench === Joern 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 ## News / Changelog - Joern v4.0.0 migrates from overflowdb to flatgraph - Joern v2.0.0 upgrades from Scala2 to Scala3 - Joern v1.2.0 removes the `overflowdb.traversal.Traversal` class. This change is not completely backwards compatible. See here for a detailed writeup. ## Requirements - JDK 21 (other versions _might_ work, but have not been properly tested) - _optional_: gcc and g++ (for auto-discovery of C/C++ system header files if included/used in your C/C++ code) ## Quick Installation [code] If the installation script fails for any reason, try [code] ## Development Requirements - java - sbt ## Run unit and integration tests locally Unit tests: [code] (sbt 2.x runs tests incrementally, skipping ones that already passed on unchanged inputs; use `sbt testFull` to force a full run, e.g. to reproduce CI behavior.) Integration tests: [code] There is an experimental partial Bazel build setup. Check bazel.md for further details. ## Docker based execution [code] To run joern in server mode: [code] Almalinux 9 requires the CPU to support SSE4.2. For kvm64 VM use the Almalinux 8 version instead. [code] ## Releases 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.zip` - `joern-cli-linux-arm64.zip` - `joern-cli-macos-x86_64.zip` - `joern-cli-macos-arm64.zip` - `joern-cli-windows-x86_64.zip` - `joern-cli-windows-arm64.zip` `joern-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. ## Developers ### Contribution Guidelines Thank you for taking time to contribute to Joern! The Contributor's guide covers the architecture, development environment, coding style, tests and pull requests in detail. AI coding agents should start with AGENTS.md. Here are a few guidelines to ensure your pull request will get merged as soon as possible: * Try to make use of the templates as far as possible, however they may not suit all needs. The minimum we would like to see is: - A title that briefly describes the change and purpose of the PR, preferably with the affected module in square brackets, e.g. `[javasrc2cpg] Addition Operator Fi