Krzysztof Borowski
Bartosz Baliś
Tomasz Orzechowski
we argue that helping the programmer with code understanding increasingly becomes one of the most essential factors in software development
while b ≠ 0:
if a > b:
a := a - b
else:
b := b - a
return a
CFG + PDG + AST
class A()
object AFactory {
def createA() = {
new A()
}
}
class A() {
def runA(): Unit = ...
def run(): Unit = ...
}
object AFactory {
def createA() = {
new A()
}
}
def main() = {
AFactory.createA().runA()
}
syntax = "proto3";
message Location {
string uri = 1;
int32 startLine = 2;
int32 startCharacter = 3;
int32 endLine = 4;
int32 endCharacter = 5;
}
message Edge {
string to = 1;
string type = 2;
Location location = 3;
map<string, string> properties = 4;
}
message GraphNode {
string id = 1;
string kind = 2;
Location location = 3;
map<string, string> properties = 4;
string displayName = 5;
repeated Edge edges = 6;
}
message SemanticGraphFile {
string uri = 1;
repeated GraphNode nodes = 2;
}
https://plugins.jetbrains.com/plugin/13467-graph-buddy
https://marketplace.visualstudio.com/items?itemName=virtuslab.graph-buddy
https://graphbuddy.virtuslab.com/