analysis.go 1.0 KB
Newer Older
P
Phodal HUANG 已提交
1 2 3
package cmd

import (
P
Phodal Huang 已提交
4
	"coca/core/models"
P
Phodal HUANG 已提交
5
	"encoding/json"
P
Phodal HUANG 已提交
6 7
	"github.com/spf13/cobra"

P
Phodal Huang 已提交
8 9 10
	. "coca/core/adapter/call"
	. "coca/core/adapter/identifier"
	. "coca/core/support"
P
Phodal HUANG 已提交
11 12
)

P
Phodal Huang 已提交
13
var analysisCmd *cobra.Command = &cobra.Command{
P
Phodal HUANG 已提交
14 15 16 17 18 19 20
	Use:   "analysis",
	Short: "analysis package",
	Long:  ``,
	Run: func(cmd *cobra.Command, args []string) {
		importPath := cmd.Flag("path").Value.String()

		if importPath != "" {
P
Phodal HUANG 已提交
21 22 23 24 25 26 27 28 29
			identifierApp := new(JavaIdentifierApp)
			iNodes := identifierApp.AnalysisPath(importPath)

			var classes []string = nil

			for _, node := range iNodes {
				classes = append(classes, node.Package + "." + node.Name)
			}

P
Phodal HUANG 已提交
30
			callApp := new(JavaCallApp)
P
Phodal Huang 已提交
31 32 33 34 35 36

			var callNodes []models.JClassNode

			defer func() {
				callNodes = callApp.AnalysisPath(importPath, classes, iNodes)
			}()
P
Phodal HUANG 已提交
37

P
Phodal HUANG 已提交
38 39
			cModel, _ := json.MarshalIndent(callNodes, "", "\t")
			WriteToFile("deps.json", string(cModel))
P
Phodal HUANG 已提交
40 41 42 43 44
		}
	},
}

func init() {
P
Phodal Huang 已提交
45 46
	rootCmd.AddCommand(analysisCmd)

P
Phodal Huang 已提交
47
	analysisCmd.PersistentFlags().StringP("path", "p", "Code Path", "example -p core/main")
P
Phodal HUANG 已提交
48
}