io.joern:c2cpg_2.13
Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc
Science Score: 54.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
✓Committers with academic emails
4 of 73 committers (5.5%) from academic institutions -
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (16.1%) to scientific vocabulary
Keywords
Keywords from Contributors
Repository
Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs. Discord https://discord.gg/vv4MH284Hc
Basic Info
- Host: GitHub
- Owner: joernio
- License: apache-2.0
- Language: Scala
- Default Branch: master
- Homepage: https://joern.io/
- Size: 159 MB
Statistics
- Stars: 2,603
- Watchers: 40
- Forks: 354
- Open Issues: 309
- Releases: 1,000
Topics
Metadata Files
README.md
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.Traversalclass. 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
``` 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:
bash
sbt test
Integration tests:
bash
sbt joerncli/stage querydb/createDistribution
python -m pip install requests pexpect # wexpect on Windows
python -u ./testDistro.py
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.
- A title that briefly describes the change and purpose of the PR, preferably with the affected module in square brackets, e.g.
- 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.
- Remember to format your code, i.e. run
IDE setup
Intellij IDEA
- Download Intellij Community
- Install and run it
- Install the Scala Plugin - just search and install from within Intellij.
- Important: open
sbtin your local joern repository, runcompileand 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. notsbt project!) - Await the import and indexing to complete, then you can start, e.g.
Build -> build projector 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 theReopen in Containerbutton to reopen the folder in the container created by the.devcontainer/Dockerfilefile. - Option 2: press
Ctrl + Shift + Pthen selectDev Containers: Reopen in Container
- Option 1: Visual Studio Code detects the new files and opens a message box saying:
- Press
Ctrl + Shift + Pthen selectMetals: Import build - After
Metals: Import buildsucceeds, 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
Owner
- Name: joern.io
- Login: joernio
- Kind: organization
- Website: https://joern.io/
- Twitter: joernio
- Repositories: 14
- Profile: https://github.com/joernio
Citation (CITATION.cff)
cff-version: 1.2.0 message: "If you use this software, please cite it as below. Reminder to update the `version` and `date-released` as needed." title: "Joern: The Bug Hunter's Workbench" authors: - given-names: joern.io url: "https://github.com/joernio/joern" version: 2.0 date-released: 2024-01-18
Committers
Last synced: 8 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Max Leuthäuser | 1****r | 512 |
| Fabian Yamaguchi | f****s@s****o | 503 |
| David Baker Effendi | d****e@s****a | 460 |
| Claudiu-Vlad Ursache | c****w@s****o | 448 |
| Michael Pollmeier | m****l@m****m | 370 |
| Xavier Pinho | x****o@s****o | 244 |
| Scala Steward | 4****d | 152 |
| Markus Lottmann | m****s@s****o | 140 |
| Johannes Coetzee | j****e@s****o | 124 |
| Johannes Coetzee | j****e@q****i | 121 |
| Andrei Dreyer | a****i@w****m | 119 |
| Niko Schmidt | i****o | 108 |
| Pandurang Patil | p****l@p****i | 78 |
| Rahul Godbole | 1****o | 54 |
| Karan Batavia | 1****a | 47 |
| Jacob Taylor-Hindle | G****f | 41 |
| KhemrajSingh Rathore | k****e@p****i | 33 |
| Liyw | 9****0@q****m | 24 |
| Suchakra Sharma | s****a@p****i | 24 |
| Ankit Kumar | 1****o | 23 |
| hiteshbedre | 3****e | 20 |
| bbrehm | b****d@s****o | 18 |
| maltek | 1****k | 18 |
| prabhu | p****u@a****m | 17 |
| Reuben Steenekamp | r****p@g****m | 14 |
| Behrad Garmany | b****y@r****e | 8 |
| Datta Mundada | d****3@g****m | 7 |
| ditto | 8****9@q****m | 5 |
| Olof-Joachim Frahm (欧雅福) | o****b@m****t | 5 |
| evilpan | i@p****t | 4 |
| and 43 more... | ||
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 4 months ago
All Time
- Total issues: 455
- Total pull requests: 1,824
- Average time to close issues: 5 months
- Average time to close pull requests: 6 days
- Total issue authors: 162
- Total pull request authors: 49
- Average comments per issue: 0.99
- Average comments per pull request: 0.36
- Merged pull requests: 1,386
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 134
- Pull requests: 1,011
- Average time to close issues: 6 days
- Average time to close pull requests: 2 days
- Issue authors: 74
- Pull request authors: 31
- Average comments per issue: 0.73
- Average comments per pull request: 0.39
- Merged pull requests: 789
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- DavidBakerEffendi (109)
- AndreiDreyer (24)
- karan-batavia (22)
- prabhu (14)
- maltek (10)
- d1tto (8)
- NemoTR (7)
- chengkenyong (7)
- tuxology (6)
- xavierpinho (6)
- Liyw979 (6)
- hac425xxx (6)
- johannescoetzee (6)
- max-leuthaeuser (6)
- khemrajrathore (5)
Pull Request Authors
- max-leuthaeuser (382)
- DavidBakerEffendi (295)
- AndreiDreyer (201)
- mpollmeier (177)
- xavierpinho (176)
- johannescoetzee (140)
- scala-steward (133)
- ml86 (64)
- karan-batavia (34)
- maltek (26)
- ursachec (25)
- bbrehm (18)
- tuxology (16)
- khemrajrathore (13)
- sfncat (12)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 38
- Total downloads: unknown
- Total docker downloads: 104
-
Total dependent packages: 65
(may contain duplicates) -
Total dependent repositories: 2
(may contain duplicates) - Total versions: 47,484
proxy.golang.org: github.com/joernio/joern
- Documentation: https://pkg.go.dev/github.com/joernio/joern#section-documentation
- License: apache-2.0
-
Latest release: v4.0.414+incompatible
published 4 months ago
Rankings
repo1.maven.org: io.joern:x2cpg_3
x2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/x2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.411
published 4 months ago
Rankings
repo1.maven.org: io.joern:dataflowengineoss_2.13
dataflowengineoss
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/dataflowengineoss_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:semanticcpg_3
semanticcpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/semanticcpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:c2cpg_2.13
c2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/c2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:console_2.13
console
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/console_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:javasrc2cpg_2.13
javasrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/javasrc2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:x2cpg_2.13
x2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/x2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:macros_2.13
macros
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/macros_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:semanticcpg_2.13
semanticcpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/semanticcpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:dataflowengineoss_3
dataflowengineoss
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/dataflowengineoss_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:jimple2cpg_2.13
jimple2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/jimple2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:pysrc2cpg_2.13
pysrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/pysrc2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:kotlin2cpg_2.13
kotlin2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/kotlin2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:fuzzyc2cpg_2.13
fuzzyc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/fuzzyc2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.1.911
published over 3 years ago
Rankings
repo1.maven.org: io.joern:ghidra2cpg-frontend_2.13
ghidra2cpg-frontend
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/ghidra2cpg-frontend_2.13/
- License: Apache-2.0
-
Latest release: 1.1.268
published about 4 years ago
Rankings
repo1.maven.org: io.joern:javasrc2cpg_3
javasrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/javasrc2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:py2cpg_2.13
py2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/py2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.1.588
published almost 4 years ago
Rankings
repo1.maven.org: io.joern:php2cpg_3
php2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/php2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:jssrc2cpg_3
jssrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/jssrc2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:jimple2cpg_3
jimple2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/jimple2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.412
published 4 months ago
Rankings
repo1.maven.org: io.joern:php2cpg_2.13
php2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/php2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:joern-cli_2.13
joern-cli
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/joern-cli_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:macros_3
macros
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/macros_3/
- License: Apache-2.0
-
Latest release: 4.0.411
published 4 months ago
Rankings
repo1.maven.org: io.joern:querydb_3
querydb
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/querydb_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:gosrc2cpg_3
gosrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/gosrc2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:console_3
console
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/console_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:kotlin2cpg_3
kotlin2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/kotlin2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:jssrc2cpg_2.13
jssrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/jssrc2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:c2cpg_3
c2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/c2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:js2cpg_2.13
js2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/js2cpg_2.13/
- License: Apache-2.0
-
Latest release: 1.1.821
published over 3 years ago
Rankings
repo1.maven.org: io.joern:querydb_2.13
querydb
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/querydb_2.13/
- License: Apache-2.0
-
Latest release: 1.2.44
published over 2 years ago
Rankings
repo1.maven.org: io.joern:csharpsrc2cpg_3
csharpsrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/csharpsrc2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:rubysrc2cpg_3
rubysrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/rubysrc2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:joern-cli_3
joern-cli
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/joern-cli_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:ghidra2cpg_3
ghidra2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/ghidra2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:swiftsrc2cpg_3
swiftsrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/swiftsrc2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
repo1.maven.org: io.joern:pysrc2cpg_3
pysrc2cpg
- Homepage: https://joern.io/
- Documentation: https://appdoc.app/artifact/io.joern/pysrc2cpg_3/
- License: Apache-2.0
-
Latest release: 4.0.414
published 4 months ago
Rankings
Dependencies
- actions/checkout v3 composite
- actions/setup-java v3 composite
- actions/checkout v3 composite
- actions/create-release v1 composite
- actions/setup-java v3 composite
- actions/upload-release-asset v1 composite
- actions/checkout v3 composite
- actions/setup-java v3 composite
- centos centos7.9.2009 build
- alpine latest build
- androidx.appcompat:appcompat 1.2.0 implementation
- androidx.constraintlayout:constraintlayout 2.0.4 implementation
- androidx.core:core-ktx 1.3.2 implementation
- com.google.android.material:material 1.3.0 implementation
- com.google.code.gson:gson 2.9.0 implementation
- org.jetbrains.kotlin:kotlin-stdlib-jdk8 * implementation
- androidx.appcompat:appcompat 1.4.1 implementation
- androidx.constraintlayout:constraintlayout 2.1.3 implementation
- androidx.core:core-ktx 1.7.0 implementation
- com.github.bumptech.glide:glide 4.11.0 implementation
- actions/checkout v3 composite
- docker/build-push-action v4 composite
- docker/login-action v2 composite
- docker/metadata-action v4 composite
- docker/setup-buildx-action v2 composite
- docker/setup-qemu-action v2 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/setup-java v3 composite
- ruby/setup-ruby v1 composite