All Projects → plume-oss → plume

plume-oss / plume

Licence: Apache-2.0 license
Plume is a code property graph analysis library with options to extract the CPG from Java bytecode and store the result in various graph databases.

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to plume

datatheque.com
a data science blog
Stars: ✭ 12 (-77.36%)
Mutual labels:  neo4j, graph-databases
pyTigerGraph
pyTigerGraph is a Python package for interacting with TigerGraph databases.
Stars: ✭ 50 (-5.66%)
Mutual labels:  graph-databases, tigergraph
awesome-dynamic-graphs
A collection of resources on dynamic/streaming/temporal/evolving graph processing systems, databases, data structures, datasets, and related academic and industrial work
Stars: ✭ 89 (+67.92%)
Mutual labels:  graph-databases
llvm2cpg
LLVM meets Code Property Graphs
Stars: ✭ 62 (+16.98%)
Mutual labels:  code-property-graph
assertj-neo4j
Assertions for Neo4J
Stars: ✭ 13 (-75.47%)
Mutual labels:  neo4j
database-journal
Databases: Concepts, commands, codes, interview questions and more...
Stars: ✭ 50 (-5.66%)
Mutual labels:  neo4j
neo4j-expire
GraphAware Module for Expiring (Deleting) Nodes and Relationships
Stars: ✭ 30 (-43.4%)
Mutual labels:  neo4j
BusinessIntelligence
商务智能期末项目
Stars: ✭ 43 (-18.87%)
Mutual labels:  neo4j
OGMNeo
[No Maintenance] Neo4j nodeJS OGM(object-graph mapping) abstraction layer
Stars: ✭ 54 (+1.89%)
Mutual labels:  neo4j
PyEmbeo
graph embeddings for neo4j in python
Stars: ✭ 25 (-52.83%)
Mutual labels:  neo4j
ComplexNetwork
中国娱乐圈关系挖掘,可以快速的查询明星之间的关系。This is a complex network of course assignments. The realization of the relationship analysis and visualization of China's entertainment industry, you can quickly query the relationship between the stars
Stars: ✭ 24 (-54.72%)
Mutual labels:  neo4j
neo4j-ogm-university
Example Project for Neo4j OGM
Stars: ✭ 52 (-1.89%)
Mutual labels:  neo4j
janusgraph-docker
Yet another JanusGraph, Cassandra/Scylla and Elasticsearch in Docker Compose setup
Stars: ✭ 54 (+1.89%)
Mutual labels:  janusgraph
graphql
A GraphQL to Cypher query execution layer for Neo4j and JavaScript GraphQL implementations.
Stars: ✭ 397 (+649.06%)
Mutual labels:  neo4j
neo4j-faker
Use faker cypher functions to generate demo and test data with cypher
Stars: ✭ 30 (-43.4%)
Mutual labels:  neo4j
CyFHIR
A Neo4j Plugin for Handling HL7 FHIR Data
Stars: ✭ 39 (-26.42%)
Mutual labels:  neo4j
twitch-project
A weekly stream in which I build a web application with Neo4j and Typescript
Stars: ✭ 78 (+47.17%)
Mutual labels:  neo4j
awesome-knowledge-graphs
Graph databases, Knowledge Graphs, SPARQ
Stars: ✭ 56 (+5.66%)
Mutual labels:  graph-databases
angular-neo4j
Neo4j Bolt driver wrapper for Angular
Stars: ✭ 18 (-66.04%)
Mutual labels:  neo4j
elixir ravelry
Elixir API using Neo4j database for ElixirConf 2017 talk
Stars: ✭ 21 (-60.38%)
Mutual labels:  neo4j

Plume is a language front-end to construct an intermediate representation called a code-property graphs from JVM bytecode. Plume is graph database agnostic and can store code-property graphs to multiple graph databases.

License GitHub Actions codecov

Important

Plume is the original implementation of jimple2cpg. The frontend on Joern project is optimized around OverflowDB and is much more lightweight. This is project focuses on experimenting with incremental dataflow analysis and comparing database backend performance.

Versions < 0.6.3 of Plume were Kotlin based but versions from 1.0.0 onwards have been moved to a Scala implementation for better interfacing with the CPG schema library.

If your project depends on Plume I am happy to still provide maintenance and support but I recommend any new research to begin on Joern where I also spend time providing help and support.

Quickstart

One can run Plume from the plume binary which will use OverflowDB as the graph database backend if no config is found. If one would like to configure another backend then the example driver.yaml can be adjusted to include the use of another database by uncommenting and editing the respective fields given by the skeleton. E.g. using Neo4j:

database: Neo4j
params:
  hostname: localhost
  port: 7687
  username: neo4j
  password: neo4j
  txMax: 25

For more documentation and basic guides, check out the project homepage or the ScalaDoc.

Important: If you are using the TigerGraph driver you need to install the gsql_client.jarand add it to an environment variable called GSQL_CLIENT. Instructions are here e.g.,

curl https://docs.tigergraph.com/tigergraph-server/current/gsql-shell/_attachments/gsql_client.jar --output gsql_client.jar
export GSQL_HOME=`pwd`/gsql_client.jar

Remember to set the tgVersion correctly in the TigerGraphDriver.

Community

  • If you have any questions or want to be involved then check out our discussions page.
  • Joern's Discord. Note, this will give you temporary membership to the server. Once joined you can obtain permanent membership by being assigned role if necessary.
  • Plume is primarily maintained by David Baker Effendi

Known Bugs

  • Due to module encapsulation in Java 17, Kryo serialization for TinkerGraphDriver will not work due to serialization errors.

Adding Plume as a Dependency

Replace X.X.X with the desired version on JitPack.

libraryDependencies ++= Seq(
  com.github.plume-oss %% plume % X.X.X
)

Don't forget to include the JCenter and JitPack repository in your build.sbt.

resolvers += "jitpack" at "https://jitpack.io"

Building from Source

Plume releases are available on JitPack. If downloading from JitPack is not an option, or you would like to depend on a modified version of Plume, you can build Plume locally and use it as an unmanaged dependency. JDK version 11 or higher is required.

git clone https://github.com/plume-oss/plume.git
cd plume
sbt stage

This will build target/scala-2.13/plume_2.13-X.X.X.jar which can be imported into your local project.

Logging

Plume uses SLF4J as the logging fascade.

Sponsored by

Amazon Science

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].