diff --git a/adapter/call/JavaCallApp.go b/adapter/call/JavaCallApp.go index ac347295047b87cf1cce2bb41118107a34fd749f..1192e5c41a28e987c14d1a9c98d5979d8556b9a8 100644 --- a/adapter/call/JavaCallApp.go +++ b/adapter/call/JavaCallApp.go @@ -1,7 +1,6 @@ package call import ( - "encoding/json" "fmt" "github.com/antlr/antlr4/runtime/Go/antlr" "os" @@ -9,15 +8,20 @@ import ( "strings" . "../../language/java" + . "../models" ) +var nodeInfos []JClassNode + type JavaCallApp struct { } -func (j *JavaCallApp) AnalysisPath(codeDir string) { +func (j *JavaCallApp) AnalysisPath(codeDir string) []JClassNode { + nodeInfos = nil files := (*JavaCallApp)(nil).javaFiles(codeDir) for index := range files { + nodeInfo := NewClassNode() file := files[index] displayName := filepath.Base(file) @@ -30,10 +34,11 @@ func (j *JavaCallApp) AnalysisPath(codeDir string) { antlr.NewParseTreeWalker().Walk(listener, context) - nodeInfo := listener.getNodeInfo() - bytes, _ := json.Marshal(nodeInfo) - fmt.Println(string(bytes)) + nodeInfo = listener.getNodeInfo() + nodeInfos = append(nodeInfos, *nodeInfo) } + + return nodeInfos } func (j *JavaCallApp) javaFiles(codeDir string) []string { diff --git a/adapter/call/JavaCallListener.go b/adapter/call/JavaCallListener.go index 4ae7a8b8ad20688aa793252072b534e3b450a52c..997375db525b9667dc33b04cbfcfc540ab048b3d 100644 --- a/adapter/call/JavaCallListener.go +++ b/adapter/call/JavaCallListener.go @@ -2,7 +2,7 @@ package call import ( . "../../language/java" - . "./models" + . "../models" "github.com/antlr/antlr4/runtime/Go/antlr" "reflect" "strings" diff --git a/adapter/call/models/JClassNode.go b/adapter/call/models/JClassNode.go deleted file mode 100644 index 00b1ad993ace680067df85790a6d5b8aa9f5a5ce..0000000000000000000000000000000000000000 --- a/adapter/call/models/JClassNode.go +++ /dev/null @@ -1,8 +0,0 @@ -package models - -type JClassNode struct { - Package string - Class string - Type string - MethodCalls []JMethodCall -} diff --git a/adapter/identifier/JavaIdentifierApp.go b/adapter/identifier/JavaIdentifierApp.go index ca537a11c8023b3efc81ff70779156f5a4c96ddc..66092fb46874dd3a6be2ef239cd30e38531895f8 100644 --- a/adapter/identifier/JavaIdentifierApp.go +++ b/adapter/identifier/JavaIdentifierApp.go @@ -1,7 +1,6 @@ package identifier import ( - "encoding/json" "fmt" "github.com/antlr/antlr4/runtime/Go/antlr" "os" @@ -9,23 +8,20 @@ import ( "strings" . "../../language/java" - . "./models" + . "../models" ) -type JsonIdentifier struct { - Package string - Name string - Type string - Methods []JMethod -} +var nodeInfos []JsonIdentifier = nil type JavaIdentifierApp struct { } -func (j *JavaIdentifierApp) AnalysisPath(codeDir string) { +func (j *JavaIdentifierApp) AnalysisPath(codeDir string) []JsonIdentifier { + nodeInfos = nil files := (*JavaIdentifierApp)(nil).javaFiles(codeDir) for index := range files { file := files[index] + node := NewJsonIdentifier() displayName := filepath.Base(file) fmt.Println("Start parse java call: " + displayName) @@ -40,11 +36,13 @@ func (j *JavaIdentifierApp) AnalysisPath(codeDir string) { antlr.NewParseTreeWalker().Walk(listener, context) if clzInfo.Name != "" { - identifier := &JsonIdentifier{clzInfo.Pkg, clzInfo.Name, clzInfo.Type, clzInfo.GetMethods()} - bytes, _ := json.Marshal(identifier) - fmt.Println(string(bytes)) + node = &JsonIdentifier{clzInfo.Pkg, clzInfo.Name, clzInfo.Type, clzInfo.GetMethods()} + nodeInfos = append(nodeInfos, *node) + } } + + return nodeInfos } func (j *JavaIdentifierApp) javaFiles(codeDir string) []string { diff --git a/adapter/identifier/JavaIdentifierListener.go b/adapter/identifier/JavaIdentifierListener.go index 0c1d8efbb3e26ba680482cd335d3ee1601a060c2..cfc181618cd86d7b05a7159217810abb63bd5269 100644 --- a/adapter/identifier/JavaIdentifierListener.go +++ b/adapter/identifier/JavaIdentifierListener.go @@ -2,7 +2,7 @@ package identifier import ( . "../../language/java" - . "./models" + . "../models" ) var node *JIdentifier; diff --git a/adapter/models/JClassNode.go b/adapter/models/JClassNode.go new file mode 100644 index 0000000000000000000000000000000000000000..50c2c61db0d6e336fd9fdeaa5b544fd40d8138ac --- /dev/null +++ b/adapter/models/JClassNode.go @@ -0,0 +1,23 @@ +package models + +type JClassNode struct { + Package string + Class string + Type string + MethodCalls []JMethodCall +} + +type JsonIdentifier struct { + Package string + Name string + Type string + Methods []JMethod +} + +func NewClassNode() *JClassNode { + return &JClassNode{"", "", "", nil} +} + +func NewJsonIdentifier() *JsonIdentifier { + return &JsonIdentifier{"", "", "", nil} +} \ No newline at end of file diff --git a/adapter/identifier/models/JIdentifier.go b/adapter/models/JIdentifier.go similarity index 100% rename from adapter/identifier/models/JIdentifier.go rename to adapter/models/JIdentifier.go diff --git a/adapter/identifier/models/JMethod.go b/adapter/models/JMethod.go similarity index 100% rename from adapter/identifier/models/JMethod.go rename to adapter/models/JMethod.go diff --git a/adapter/call/models/JMethodCall.go b/adapter/models/JMethodCall.go similarity index 100% rename from adapter/call/models/JMethodCall.go rename to adapter/models/JMethodCall.go diff --git a/cmd/analysis.go b/cmd/analysis.go index 471d968f340bdd6eabc0420d6b2c71e4f41b2b38..6261afb265fa95c872874990f386266c98a750bb 100644 --- a/cmd/analysis.go +++ b/cmd/analysis.go @@ -1,6 +1,8 @@ package cmd import ( + "encoding/json" + "fmt" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -17,10 +19,16 @@ var collCmd *cobra.Command = &cobra.Command{ if importPath != "" { callApp := new(JavaCallApp) - callApp.AnalysisPath(importPath) + callNodes := callApp.AnalysisPath(importPath) + + cModel, _ := json.Marshal(callNodes) identifierApp := new(JavaIdentifierApp) - identifierApp.AnalysisPath(importPath) + identNodes := identifierApp.AnalysisPath(importPath) + iNodes, _ := json.Marshal(identNodes) + + fmt.Println(string(cModel)) + fmt.Println(string(iNodes)) } }, }