未验证 提交 e09f9d93 编写于 作者: P Phodal HUANG

feat: add basic json

上级 504b872e
package call package call
import ( import (
"encoding/json"
"fmt" "fmt"
"github.com/antlr/antlr4/runtime/Go/antlr" "github.com/antlr/antlr4/runtime/Go/antlr"
"os" "os"
...@@ -25,9 +26,13 @@ func (j *JavaCallApp) AnalysisPath(codeDir string) { ...@@ -25,9 +26,13 @@ func (j *JavaCallApp) AnalysisPath(codeDir string) {
parser := (*JavaCallApp)(nil).processFile(file) parser := (*JavaCallApp)(nil).processFile(file)
context := parser.CompilationUnit() context := parser.CompilationUnit()
listener := new(JavaCallListener) listener := NewJavaCallListener()
antlr.NewParseTreeWalker().Walk(listener, context) antlr.NewParseTreeWalker().Walk(listener, context)
nodeInfo := listener.getNodeInfo()
bytes, _ := json.Marshal(nodeInfo)
fmt.Println(string(bytes))
} }
} }
......
...@@ -13,15 +13,30 @@ var currentPkg string ...@@ -13,15 +13,30 @@ var currentPkg string
var currentClz string var currentClz string
var methodCalls []JMethodCall var methodCalls []JMethodCall
var currentMethodCall *JMethodCall var currentMethodCall *JMethodCall
var currentType string
var fields = make(map[string]string) var fields = make(map[string]string)
var localVars = make(map[string]string) var localVars = make(map[string]string)
var formalParameters = 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 { type JavaCallListener struct {
BaseJavaParserListener BaseJavaParserListener
} }
func (s *JavaCallListener) getNodeInfo() *JClassNode {
return &JClassNode{currentPkg, currentClz, currentType, methodCalls}
}
func (s *JavaCallListener) EnterPackageDeclaration(ctx *PackageDeclarationContext) { func (s *JavaCallListener) EnterPackageDeclaration(ctx *PackageDeclarationContext) {
currentPkg = ctx.QualifiedName().GetText() currentPkg = ctx.QualifiedName().GetText()
} }
...@@ -32,10 +47,12 @@ func (s *JavaCallListener) EnterImportDeclaration(ctx *ImportDeclarationContext) ...@@ -32,10 +47,12 @@ func (s *JavaCallListener) EnterImportDeclaration(ctx *ImportDeclarationContext)
} }
func (s *JavaCallListener) EnterClassDeclaration(ctx *ClassDeclarationContext) { func (s *JavaCallListener) EnterClassDeclaration(ctx *ClassDeclarationContext) {
currentType = "Class"
currentClz = ctx.IDENTIFIER().GetText() currentClz = ctx.IDENTIFIER().GetText()
} }
func (s *JavaCallListener) EnterInterfaceDeclaration(ctx *InterfaceDeclarationContext) { func (s *JavaCallListener) EnterInterfaceDeclaration(ctx *InterfaceDeclarationContext) {
currentType = "Interface"
currentClz = ctx.IDENTIFIER().GetText() currentClz = ctx.IDENTIFIER().GetText()
} }
......
package models
type JClassNode struct {
Package string
Class string
Type string
MethodCalls []JMethodCall
}
package models package models
import "fmt"
type JMethodCall struct { type JMethodCall struct {
Pkg string Pkg string
Dlz string Dlz string
MethodName string MethodName string
//methodCalls map[string]string
//tableOps map[string]string //tableOps map[string]string
} }
func (call *JMethodCall) AddMethodCall (targetType string, method string) { func (call *JMethodCall) AddMethodCall (targetType string, method string) {
fmt.Println(targetType, "->", method) //fmt.Println(targetType, "->", method)
} }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册