cpg
A library to extract Code Property Graphs from C/C++, Java, Go, Python, Ruby and every other language through LLVM-IR.
Science Score: 85.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
Found 2 DOI reference(s) in README -
✓Academic publication links
Links to: arxiv.org -
✓Committers with academic emails
10 of 26 committers (38.5%) from academic institutions -
✓Institutional organization owner
Organization fraunhofer-aisec has institutional domain (www.aisec.fraunhofer.de) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.6%) to scientific vocabulary
Keywords
Keywords from Contributors
Scientific Fields
Repository
A library to extract Code Property Graphs from C/C++, Java, Go, Python, Ruby and every other language through LLVM-IR.
Basic Info
- Host: GitHub
- Owner: Fraunhofer-AISEC
- License: apache-2.0
- Language: Kotlin
- Default Branch: main
- Homepage: https://fraunhofer-aisec.github.io/cpg/
- Size: 268 MB
Statistics
- Stars: 366
- Watchers: 11
- Forks: 79
- Open Issues: 147
- Releases: 117
Topics
Metadata Files
README.md
Code Property Graph
A simple library to extract a code property graph out of source code. It has support for multiple passes that can extend the analysis after the graph is constructed. It currently supports C/C++ (C17), Java (Java 13) and has experimental support for Golang, Python and TypeScript. Furthermore, it has support for the LLVM IR and thus, theoretically support for all languages that compile using LLVM.
What is this?
A code property graph (CPG) is a representation of source code in form of a labelled directed multi-graph. Think of it as directed a graph where each node and edge is assigned a (possibly empty) set of key-value pairs (properties). This representation is supported by a range of graph databases such as Neptune, Cosmos, Neo4j, Titan, and Apache Tinkergraph and can be used to store source code of a program in a searchable data structure. Thus, the code property graph allows to use existing graph query languages such as Cypher, NQL, SQL, or Gremlin in order to either manually navigate through interesting parts of the source code or to automatically find "interesting" patterns.
This library uses Eclipse CDT for parsing C/C++ source code JavaParser for parsing Java. In contrast to compiler AST generators, both are "forgiving" parsers that can cope with incomplete or even semantically incorrect source code. That makes it possible to analyze source code even without being able to compile it (due to missing dependencies or minor syntax errors). Furthermore, it uses LLVM through the javacpp project to parse LLVM IR. Note that the LLVM IR parser is not forgiving, i.e., the LLVM IR code needs to be at least considered valid by LLVM. The necessary native libraries are shipped by the javacpp project for most platforms.
Specifications
In order to improve some formal aspects of our library, we created several specifications of our core concepts. Currently, the following specifications exist: * Dataflow Graph * Evaluation Order Graph * Graph Model in neo4j * Language and Language Frontend
We aim to provide more specifications over time.
Usage
To build the project from source, you have to generate a gradle.properties file locally.
This file also enables and disables the supported programming languages.
We provide a sample file here - simply copy it to gradle.properties in the directory of the cpg-project.
Instead of manually generating or editing the gradle.properties file, you can also use the configure_frontends.sh script, which edits the properties setting the supported programming languages for you.
For Visualization Purposes
In order to get familiar with the graph itself, you can use the subproject cpg-neo4j. It uses this library to generate the CPG for a set of user-provided code files. The graph is then persisted to a Neo4j graph database. The advantage this has for the user, is that Neo4j's visualization software Neo4j Browser can be used to graphically look at the CPG nodes and edges, instead of their Java representations.
Please make sure, that the APOC plugin is enabled on your neo4j server. It is used in mass-creating nodes and relationships.
For example using docker:
docker run -p 7474:7474 -p 7687:7687 -d -e NEO4J_AUTH=neo4j/password -e NEO4JLABS_PLUGINS='["apoc"]' neo4j:5
As Library
The most recent version is being published to Maven central and can be used as a simple dependency, either using Maven or Gradle.
```kotlin dependencies { val cpgVersion = "9.0.2"
// use the 'cpg-core' module
implementation("de.fraunhofer.aisec", "cpg-core", cpgVersion)
// and then add the needed extra modules, such as Go and Python
implementation("de.fraunhofer.aisec", "cpg-language-go", cpgVersion)
implementation("de.fraunhofer.aisec", "cpg-language-python", cpgVersion)
} ```
There are some extra steps necessary for the cpg-language-cxx module. Since Eclipse CDT is not published on maven central, it is necessary to add a repository with a custom layout to find the released CDT files. For example, using Gradle's Kotlin syntax:
```kotlin
repositories {
// This is only needed for the C++ language frontend
ivy {
setUrl("https://download.eclipse.org/tools/cdt/releases/")
metadataSources {
artifact()
}
patternLayout {
artifact("[organisation].[module]_[revision].[ext]")
}
}
} ```
Beware, that the cpg module includes all optional features and might potentially be HUGE (especially because of the LLVM support). If you do not need LLVM, we suggest just using the cpg-core module with the needed extra modules like cpg-language-go. In the future we are working on extracting more optional modules into separate modules.
Development Builds
For all builds on the main branch, an artefact is published in the GitHub Packages under the version main-SNAPSHOT. Additionally, selected PRs that have the publish-to-github-packages label will also be published there. This is useful if an important feature is not yet in main, but you want to test it. The version refers to the PR number, e.g. 1954-SNAPSHOT.
To use the GitHub Gradle Registry, please refer to https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry#using-a-published-package
Configuration
The behavior of the library can be configured in several ways. Most of this is done through the TranslationConfiguration
and the InferenceConfiguration.
TranslationConfiguration
The TranslationConfiguration configures various aspects of the translation. E.g., it determines which languages/language
frontends and passes will be used, which information should be inferred, which files will be included, among others. The
configuration is set through a builder pattern.
InferenceConfiguration
The class InferenceConfiguration can be used to affect the behavior or the passes if they identify missing nodes.
Currently, there are three flags which can be enabled:
guessCastExpressionenables guessing if a CPP expression is a cast or a call expression if it is not clear.inferRecordsenables the inference of missing record declarations (i.e., classes and structs)inferDfgForUnresolvedSymbolsadds DFG edges to method calls represent all potential data flows if the called function is not present in the source code under analysis.
Only inferDfgForUnresolvedSymbols is turned on by default.
The configuration can be made through a builder pattern and is set in the TranslationConfiguration as follows:
```kt
val inferenceConfig = InferenceConfiguration
.builder()
.guessCastExpression(true)
.inferRecords(true)
.inferDfgForUnresolvedSymbols(true)
.build()
val translationConfig = TranslationConfiguration .builder() .inferenceConfiguration(inferenceConfig) .build() ```
Development
This section describes languages, how well they are supported, and how to use and develop them yourself.
Language Support
Languages are maintained to different degrees, and are noted in the table below with:
- maintained: if they are mostly feature complete and bugs have priority of being fixed.
- incubating: if the language is currently being worked on to reach a state of feature completeness.
- experimental: if a first working prototype was implemented, e.g., to support research topics, and its future development is unclear.
- discontinued: if the language is no longer actively developed or maintained but is kept for everyone to fork and adapt.
The current state of languages is:
| Language | Module | Branch | State |
|--------------------------|---------------------------------------|-------------------------------------------------------------------------|----------------|
| Java (Source) | cpg-language-java | main | maintained |
| C++ | cpg-language-cxx | main | maintained |
| Python | cpg-language-python | main | maintained |
| Go | cpg-language-go | main | maintained |
| INI | cpg-language-ini | main | maintained |
| JVM (Bytecode) | cpg-language-jvm | main | incubating |
| LLVM | cpg-language-llvm | main | incubating |
| TypeScript/JavaScript | cpg-language-typescript | main | experimental |
| Ruby | cpg-language-ruby | main | experimental |
| {OpenQASM,Python-Qiskit} | cpg-language-{openqasm,python-qiskit} | quantum-cpg | experimental |
Note that several languages can be compiled to LLVM IR and thus, can be analyzed using the cpg-language-llvm module (see [7]). This includes, but is not limited to, Rust, Swift, Objective-C, and Haskell (see https://llvm.org/ for more information).
Languages and Configuration
cpg-core contains the graph nodes, language-independent passes that add semantics to the cpg-AST. Languages are developed in separate gradle submodules.
To include the desired language submodules, simply toggle them on in your local gradle.properties file by setting the properties to true, e.g., (enableGoFrontend=true).
We provide a sample file with all languages switched on here.
Instead of manually editing the gradle.properties file, you can also use the configure_frontends.sh script, which edits the properties for you. Some languages need additional installation of software to run and will be listed below.
Golang
In the case of Golang, additional native code, libgoast, is used to access the Go ast packages. Gradle should automatically download the latest version of this library during the build process. This currently only works for Linux and macOS.
Python
You need to install jep. This can either be system-wide or in a virtual environment. Your jep version has to match the version used by the CPG (see version catalog).
Currently, only Python 3.{9,10,11,12,13} is supported.
System Wide
Follow the instructions at https://github.com/ninia/jep/wiki/Getting-Started#installing-jep.
Virtual Env
python3 -m venv ~/.virtualenvs/cpgsource ~/.virtualenvs/cpg/bin/activatepip3 install jep
Through the JepSingleton, the CPG library will look for well known paths on Linux and OS X. JepSingleton will prefer a virtualenv with the name cpg, this can be adjusted with the environment variable CPG_PYTHON_VIRTUALENV.
TypeScript
For parsing TypeScript, the necessary TypeScript-based code can be found in the src/main/nodejs directory of the cpg-language-typescript submodule. Gradle should build the script automatically. The bundles script will be placed inside the jar's resources and should work out of the box.
Code Style
We use Google Java Style as a formatting. Please install the appropriate plugin for your IDE, such as the google-java-format IntelliJ plugin or google-java-format Eclipse plugin.
Integration into IntelliJ
Straightforward, however three things are recommended
- Enable gradle "auto-import"
- Enable google-java-format
- Hook gradle spotlessApply into "before build" (might be obsolete with IDEA 2019.1)
Git Hooks
You can use the hook in style/pre-commit to check for formatting errors:
cp style/pre-commit .git/hooks
Contributors
The following authors have contributed to this project:
Contributing
Before accepting external contributions, you need to sign our CLA. Our CLA assistent will check, whether you already signed the CLA when you open your first pull request.
Further reading
You can find a complete list of papers here
A quick write-up of our CPG has been published on arXiv:
[1] Konrad Weiss, Christian Banse. A Language-Independent Analysis Platform for Source Code. https://arxiv.org/abs/2203.08424
A preliminary version of this cpg has been used to analyze ARM binaries of iOS apps:
[2] Julian Schütte, Dennis Titze. liOS: Lifting iOS Apps for Fun and Profit. Proceedings of the ESORICS International Workshop on Secure Internet of Things (SIoT), Luxembourg, 2019. https://arxiv.org/abs/2003.12901
An initial publication on the concept of using code property graphs for static analysis:
[3] Yamaguchi et al. - Modeling and Discovering Vulnerabilities with Code Property Graphs. https://www.sec.cs.tu-bs.de/pubs/2014-ieeesp.pdf
[4] is an unrelated, yet similar project by the authors of the above publication, that is used by the open source software Joern [5] for analysing C/C++ code. While [4] is a specification and implementation of the data structure, this project here includes various Language frontends (currently C/C++ and Java, Python to com) and allows creating custom graphs by configuring Passes which extend the graph as necessary for a specific analysis:
[4] https://github.com/ShiftLeftSecurity/codepropertygraph
[5] https://github.com/ShiftLeftSecurity/joern/
Additional extensions of the CPG to support further use-cases:
[6] Christian Banse, Immanuel Kunz, Angelika Schneider and Konrad Weiss. Cloud Property Graph: Connecting Cloud Security Assessments with Static Code Analysis. IEEE CLOUD 2021. https://doi.org/10.1109/CLOUD53861.2021.00014
[7] Alexander Küchler, Christian Banse. Representing LLVM-IR in a Code Property Graph. 25th Information Security Conference (ISC). Bali, Indonesia. 2022
[8] Maximilian Kaul, Alexander Küchler, Christian Banse. A Uniform Representation of Classical and Quantum Source Code for Static Code Analysis. IEEE International Conference on Quantum Computing and Engineering (QCE). Bellevue, WA, USA. 2023
Owner
- Name: Fraunhofer AISEC
- Login: Fraunhofer-AISEC
- Kind: organization
- Website: https://www.aisec.fraunhofer.de
- Repositories: 36
- Profile: https://github.com/Fraunhofer-AISEC
IT security research institute Fraunhofer AISEC (Applied and Integrated Security)
Citation (CITATION.cff)
preferred-citation:
type: article
authors:
- family-names: "Weiss"
given-names: "Konrad"
orcid: "https://orcid.org/0000-0000-0000-0000"
- family-names: "Banse"
given-names: "Christian"
orcid: "https://orcid.org/0000-0000-0000-0000"
doi: "10.48550/arXiv.2203.08424"
title: "A Language-Independent Analysis Platform for Source Code"
year: 2022
Committers
Last synced: 9 months ago
Top Committers
| Name | Commits | |
|---|---|---|
| Christian Banse | c****e@a****e | 658 |
| renovate[bot] | 2****] | 347 |
| vfsrfs | v****s@v****e | 163 |
| KuechA | 3****A | 153 |
| Konrad Weiss | k****s@a****e | 153 |
| dependabot[bot] | 4****] | 141 |
| Samuel Hopstock | m****7@g****m | 81 |
| Maximilian Kaul | m****l@a****e | 75 |
| Julian Schuette | j****e@a****e | 70 |
| Renovate Bot | b****t@r****m | 43 |
| Tobias Specht | t****t@a****e | 33 |
| Dennis Titze | d****e@a****e | 28 |
| Leutrim Shala | 8****a | 18 |
| maximilian-galanis | m****s@a****e | 9 |
| Selina Lin | s****n@a****e | 5 |
| Florian Wendland | f****d@a****e | 2 |
| Robin Maisch | r****h | 2 |
| Xavier George | 1****e | 2 |
| keremc | 5****c | 2 |
| shenniger | g****t@s****o | 1 |
| morbitzer | m****r | 1 |
| maximilian-galanis | m****s@g****m | 1 |
| Marius Albrecht | 6****t | 1 |
| Bharadwaj Machiraju | 2****d | 1 |
| AndHager | a****r@a****e | 1 |
| Andreas Binder | 4****e | 1 |
Committer Domains (Top 20 + Academic)
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 343
- Total pull requests: 1,153
- Average time to close issues: 5 months
- Average time to close pull requests: 9 days
- Total issue authors: 44
- Total pull request authors: 21
- Average comments per issue: 0.78
- Average comments per pull request: 1.19
- Merged pull requests: 859
- Bot issues: 5
- Bot pull requests: 287
Past Year
- Issues: 181
- Pull requests: 840
- Average time to close issues: 13 days
- Average time to close pull requests: 4 days
- Issue authors: 19
- Pull request authors: 15
- Average comments per issue: 0.57
- Average comments per pull request: 1.16
- Merged pull requests: 623
- Bot issues: 2
- Bot pull requests: 185
Top Authors
Issue Authors
- oxisto (158)
- KuechA (43)
- maximiliankaul (33)
- konradweiss (20)
- peckto (18)
- robinmaisch (6)
- renovate[bot] (5)
- seelchen (4)
- morbitzer (4)
- immqu (3)
- HaHarden (3)
- schanzen (3)
- CodingDepot (3)
- carlosgpal (3)
- for-just-we (2)
Pull Request Authors
- oxisto (427)
- renovate[bot] (275)
- KuechA (199)
- maximiliankaul (101)
- konradweiss (61)
- lshala (32)
- peckto (21)
- dependabot[bot] (12)
- andreineamtu (4)
- seelchen (3)
- robinmaisch (3)
- morbitzer (3)
- interruptedHandshake (2)
- keremc (2)
- MariusAlbrecht (2)
Top Labels
Issue Labels
Pull Request Labels
Packages
- Total packages: 21
- Total downloads: unknown
-
Total dependent packages: 24
(may contain duplicates) -
Total dependent repositories: 2
(may contain duplicates) - Total versions: 1,269
proxy.golang.org: github.com/fraunhofer-aisec/cpg
- Homepage: https://github.com/fraunhofer-aisec/cpg
- Documentation: https://pkg.go.dev/github.com/fraunhofer-aisec/cpg#section-documentation
- License: Apache-2.0
-
Latest release: v10.8.2+incompatible
published 8 months ago
Rankings
proxy.golang.org: github.com/Fraunhofer-AISEC/cpg
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://pkg.go.dev/github.com/Fraunhofer-AISEC/cpg#section-documentation
- License: Apache-2.0
-
Latest release: v10.8.2+incompatible
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-core
A simple library to extract a code property graph out of source code. It has support for multiple passes that can extend the analysis after the graph is constructed.
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-core/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-go
A Go language frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-go/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-llvm
A LLVM language frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-llvm/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-python
A Python language frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-python/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-typescript
A JavaScript/TypeScript language frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-typescript/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-analysis
Analysis modules for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-analysis/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-neo4j
An Application to translate and persist specified source code as a Code Property Graph to an installed instance of the Neo4j Graph Database.
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-neo4j/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-console
An Application to translate source code into a Code Property Graph and perform different types of analysis on the resulting graph.
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-console/
- License: The Apache License, Version 2.0
-
Latest release: 9.3.0
published 12 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg
A simple library to extract a code property graph out of source code. It has support for multiple passes that can extend the analysis after the graph is constructed.
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg/
- License: The Apache License, Version 2.0
-
Latest release: 9.0.2
published about 1 year ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-cxx
A C/C++ language frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-cxx/
- License: The Apache License, Version 2.0
-
Latest release: 10.6.1
published 9 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-concepts
A 'concepts' extension for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-concepts/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-java
A Java language frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-java/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:codyze-core
Core module of the Codyze static analysis tool
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/codyze-core/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-ini
An INI configuration file frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-ini/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:codyze-console
The web-based console of Codyze
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/codyze-console/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-ruby
A Ruby language frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-ruby/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:cpg-language-jvm
A JVM bytecode frontend for the CPG
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/cpg-language-jvm/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:codyze-compliance
The compliance module of Codyze
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/codyze-compliance/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
repo1.maven.org: de.fraunhofer.aisec:codyze
The compliance module of Codyze
- Homepage: https://github.com/Fraunhofer-AISEC/cpg
- Documentation: https://appdoc.app/artifact/de.fraunhofer.aisec/codyze/
- License: The Apache License, Version 2.0
-
Latest release: 10.8.2
published 8 months ago
Rankings
Dependencies
- golang.org/x/mod v0.5.0
- golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898
- tekao.net/jnigi v0.0.0-20201212091834-f7b899046676
- golang.org/x/mod v0.5.0
- golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898
- tekao.net/jnigi v0.0.0-20201212091834-f7b899046676
- org.apache.logging.log4j:log4j-slf4j18-impl 2.18.0 implementation
- org.jetbrains.kotlin:kotlin-reflect * implementation
- org.jetbrains.kotlin:kotlin-script-runtime * implementation
- org.jetbrains.kotlinx:ki-shell 0.5.2 implementation
- org.jetbrains.kotlinx:kotlinx-coroutines-core 1.6.4 implementation
- org.jline:jline 3.21.0 implementation
- com.fasterxml.jackson.module:jackson-module-kotlin 2.13.3 api
- com.github.javaparser:javaparser-symbol-solver-core 3.24.2 api
- com.ibm.icu:icu4j 71.1 api
- commons-io:commons-io 2.11.0 api
- org.apache.commons:commons-lang3 3.12.0 api
- org.eclipse.cdt:core 7.2.100.202105180159 api
- org.eclipse.platform:org.eclipse.core.runtime 3.25.0 api
- org.neo4j:neo4j-ogm-core 3.2.36 api
- org.opencypher:parser-9.0 9.0.20210312 api
- org.scala-lang:scala-library 2.12.15 api
- org.slf4j:jul-to-slf4j 1.7.36 api
- org.slf4j:slf4j-api 1.7.36 api
- org.apache.logging.log4j:log4j-slf4j18-impl 2.18.0 implementation
- org.jetbrains.kotlin:kotlin-reflect * implementation
- org.jetbrains.kotlin:kotlin-stdlib * implementation
- org.jetbrains:annotations 23.0.0 implementation
- org.jetbrains.kotlin:kotlin-test * testImplementation
- org.jetbrains.kotlin:kotlin-test-junit5 * testImplementation
- org.junit.jupiter:junit-jupiter-params 5.9.0 testImplementation
- org.junit.jupiter:junit-jupiter-engine 5.9.0 testRuntimeOnly
- org.bytedeco:llvm-platform 13.0.1-1.5.7 implementation
- black.ninia:jep 4.0.3 api
- info.picocli:picocli 4.6.3 api
- org.apache.logging.log4j:log4j-slf4j18-impl 2.18.0 implementation
- org.jetbrains.kotlin:kotlin-reflect * implementation
- webpack 5.74.0 development
- webpack-cli 4.10.0 development
- @types/node 18.6.2
- typescript 4.7.2
- 118 dependencies
- Fraunhofer-AISEC/codyze-action v2.3 composite
- JamesIves/github-pages-deploy-action releases/v3 composite
- actions/cache v3 composite
- actions/checkout v3 composite
- actions/create-release latest composite
- actions/download-artifact v3 composite
- actions/setup-go v3 composite
- actions/setup-java v3 composite
- actions/setup-node v3 composite
- actions/setup-python v4 composite
- actions/upload-artifact v3 composite