diff --git a/adapter/call/JavaCallApp.go b/adapter/call/JavaCallApp.go index 823b3f3bb228fc56c2627317c22293f204ca853b..ac347295047b87cf1cce2bb41118107a34fd749f 100644 --- a/adapter/call/JavaCallApp.go +++ b/adapter/call/JavaCallApp.go @@ -1,6 +1,7 @@ package call import ( + "encoding/json" "fmt" "github.com/antlr/antlr4/runtime/Go/antlr" "os" @@ -25,9 +26,13 @@ func (j *JavaCallApp) AnalysisPath(codeDir string) { parser := (*JavaCallApp)(nil).processFile(file) context := parser.CompilationUnit() - listener := new(JavaCallListener) + listener := NewJavaCallListener() antlr.NewParseTreeWalker().Walk(listener, context) + + nodeInfo := listener.getNodeInfo() + bytes, _ := json.Marshal(nodeInfo) + fmt.Println(string(bytes)) } } diff --git a/adapter/call/JavaCallListener.go b/adapter/call/JavaCallListener.go index d12b0e5949f3601b2999f806a6b48896fabe3d83..4ae7a8b8ad20688aa793252072b534e3b450a52c 100644 --- a/adapter/call/JavaCallListener.go +++ b/adapter/call/JavaCallListener.go @@ -13,15 +13,30 @@ var currentPkg string var currentClz string var methodCalls []JMethodCall var currentMethodCall *JMethodCall +var currentType string var fields = make(map[string]string) var localVars = make(map[string]string) var formalParameters = make(map[string]string) +var node *JClassNode; + +func NewJavaCallListener() *JavaCallListener { + currentClz = "" + currentPkg = "" + currentMethodCall = nil + methodCalls = nil + return &JavaCallListener{} +} + type JavaCallListener struct { BaseJavaParserListener } +func (s *JavaCallListener) getNodeInfo() *JClassNode { + return &JClassNode{currentPkg, currentClz, currentType, methodCalls} +} + func (s *JavaCallListener) EnterPackageDeclaration(ctx *PackageDeclarationContext) { currentPkg = ctx.QualifiedName().GetText() } @@ -32,10 +47,12 @@ func (s *JavaCallListener) EnterImportDeclaration(ctx *ImportDeclarationContext) } func (s *JavaCallListener) EnterClassDeclaration(ctx *ClassDeclarationContext) { + currentType = "Class" currentClz = ctx.IDENTIFIER().GetText() } func (s *JavaCallListener) EnterInterfaceDeclaration(ctx *InterfaceDeclarationContext) { + currentType = "Interface" currentClz = ctx.IDENTIFIER().GetText() } diff --git a/adapter/call/models/JClassNode.go b/adapter/call/models/JClassNode.go new file mode 100644 index 0000000000000000000000000000000000000000..00b1ad993ace680067df85790a6d5b8aa9f5a5ce --- /dev/null +++ b/adapter/call/models/JClassNode.go @@ -0,0 +1,8 @@ +package models + +type JClassNode struct { + Package string + Class string + Type string + MethodCalls []JMethodCall +} diff --git a/adapter/call/models/JMethodCall.go b/adapter/call/models/JMethodCall.go index 9e6e433631292e749f787695a36ebb353ec9134d..503371d499bc19c60c60d25b98da1ca61dbb3e7b 100644 --- a/adapter/call/models/JMethodCall.go +++ b/adapter/call/models/JMethodCall.go @@ -1,16 +1,13 @@ package models -import "fmt" - type JMethodCall struct { Pkg string Dlz string MethodName string - //methodCalls map[string]string //tableOps map[string]string } func (call *JMethodCall) AddMethodCall (targetType string, method string) { - fmt.Println(targetType, "->", method) + //fmt.Println(targetType, "->", method) }