Skip to content

BFergerson/Phenomena

Repository files navigation

Phenomena: Contextual source code behavior integration

Build Status

Phenomena is designed to support any type of graph-based representation of source code. Phenomena's base structure uses the omnilingual source code schema provided by Arthur. This schema can be extended with custom definitions and inference rules which are introduced by using a CodeObserver.

Phenomena currently supports the following types of code observers:

Structure

Description

CodeStructureObserver is the base observer which is required to use Phenomena. This observer creates nodes and edges which contain the structure of the source code in the form of an abstract syntax graph.

Observers

Structure Supported language(s)
Abstract syntax tree Bash, C++, C#, Go, Java, JavaScript, PHP, Python, Ruby
Semantic roles Bash, C++, C#, Go, Java, JavaScript, PHP, Python, Ruby

Dependence

Description

The dependence observers create edges between program statements and the preceding statements which they depend on.

Observers

Metric Supported language(s)
Identifier access Java
Method call Java

Metric

Description

The metric observers create attributes on correlating source code nodes with calculated metric data.

Observers

Metric Supported language(s)
Cyclomatic complexity Bash, C++, C#, Go, Java, JavaScript, PHP, Python, Ruby

About

Contextual source code behavior integration

Topics

Resources

License

Stars

Watchers

Forks

Packages