返回排行榜

joernio/joern

Scalajoern.io

Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc

code-analysisquery-languagecode-browserfuzzy-parsingsyntax-treedataflowcontrolflowcpgjavacppcode-property-graphc
Star 增长趋势
Star
3.3k
Forks
429
周增长
Issues
311
1k2k3k
2019年4月2021年9月2024年2月2026年7月
README

Joern - The Bug Hunter's Workbench

release Joern SBT Github All Releases Gitter

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

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

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

Development Requirements

Run unit and integration tests locally

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 based execution

docker run --rm -it -v /tmp:/tmp -v $(pwd):/app:rw -w /app -t ghcr.io/joernio/joern 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 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 joern

Releases

A new release is created automatically once per day. Contributers can also manually run the release workflow if they need the release sooner.

Developers

Contribution Guidelines

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:

  • 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 Fix.
    • A short description of the changes in the body of the PR. This could be in bullet points or paragraphs.
    • A link or reference to the related issue, if any exists.
  • Do not:
    • Immediately CC/@/email spam other contributors, the team will review the PR and assign the most appropriate contributor to review the PR. Joern is maintained by industry partners and researchers alike, for the most part with their own goals and priorities, and additional help is largely volunteer work. If your PR is going stale, then reach out to us in follow-up comments with @'s asking for an explanation of priority or planning of when it may be addressed (if ever, depending on quality).
    • Leave the description body empty, this makes reviewing the purpose of the PR difficult.
  • Remember to:
    • Remember to format your code, i.e. run sbt scalafmt Test/scalafmt
    • Add a unit test to verify your change.

IDE setup

Intellij IDEA

  • Download Intellij Community
  • Install and run it
  • Install the Scala Plugin - just search and install from within Intellij.
  • Important: open sbt in your local joern repository, run compile and keep it open - this will allow us to use the BSP build in the next step
  • Back to Intellij: open project: select your local joern clone: select to open as BSP project (i.e. not sbt project!)
  • Await the import and indexing to complete, then you can start, e.g. Build -> build project or run a test

VSCode

  • Install VSCode and Docker
  • Install the plugin ms-vscode-remote.remote-containers
  • Open Joern project folder in VSCode
    • Option 1: Visual Studio Code detects the new files and opens a message box saying: Folder 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.
    • Option 2: press Ctrl + Shift + P then select Dev Containers: Reopen in Container
  • Press Ctrl + Shift + P then select Metals: Import build
  • After Metals: Import build succeeds, you are ready to start writing code for Joern

QueryDB (queries plugin)

Quick 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

相关仓库
Graphify-Labs/graphify

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.

PythonPyPIMIT Licenseclaude-codegraphrag
graphify.com
93.3k9k
DeusData/codebase-memory-mcp

High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

CMIT Licenseclaude-codecode-analysis
deusdata.github.io/codebase-memory-mcp/
33.8k2.6k
ycm-core/YouCompleteMe

A code-completion engine for Vim

PythonPyPIGNU General Public License v3.0vimcode-completion
ycm-core.github.io/YouCompleteMe/
25.9k2.8k
yusufkaraaslan/Skill_Seekers

Convert documentation websites, GitHub repositories, and PDFs into Claude AI skills with automatic conflict detection

PythonPyPIMIT Licenseai-toolsautomation
skillseekersweb.com
14.5k1.5k
wonderwhy-er/DesktopCommanderMCP

This is MCP server for Claude that gives it terminal control, file system search and diff file editing capabilities

TypeScriptnpmMIT Licenseagentai
desktopcommander.app
8.7k962
universal-ctags/ctags

A maintained ctags implementation

CGNU General Public License v2.0ctagscode-navigation
ctags.io
7.2k661
larastan/larastan

⚗️ Adds code analysis to Laravel improving developer productivity and code quality.

PHPPackagistMIT Licenselaravelphpstan
6.5k497
javaparser/javaparser

Java 1-25 Parser and Abstract Syntax Tree for Java with advanced analysis functionalities.

JavaMavenOtherjavaparserparser
javaparser.org
6.1k1.2k
pmd/pmd

An extensible multilanguage static code analyzer.

JavaMavenOthercode-analysiscode-quality
pmd.github.io
5.5k1.6k
rrrene/credo

A static code analysis tool for the Elixir language with a focus on code consistency and teaching.

ElixirMIT Licenseelixircode-analysis
credo-ci.org
5.2k449
Kodezi/Chronos

Kodezi Chronos is a debugging-first language model that achieves state-of-the-art results on SWE-bench Lite (80.33%) and 67% real-world fix accuracy, over six times better than GPT-4. Built with Adaptive Graph-Guided Retrieval and Persistent Debug Memory. Model available Q1 2026 via Kodezi OS.

JavaMavenOtherartificial-intelligencebenchmark
chronos.so
4.9k210
braedonsaunders/codeflow

Paste any GitHub URL → interactive architecture map. See how files connect, find what breaks if you change something. No install, no accounts — runs entirely in your browser.

HTMLarchitecturebrowser-based
codeflow-five.vercel.app
4.7k716