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

import (
P
Phodal HUANG 已提交
4
	"encoding/json"
P
Phodal Huang 已提交
5
	"github.com/phodal/coca/cmd/cmd_util"
6
	"github.com/phodal/coca/pkg/application/analysis"
7
	"github.com/spf13/cobra"
P
Phodal HUANG 已提交
8 9
)

P
Phodal Huang 已提交
10
type AnalysisCmdConfig struct {
11 12
	Path        string
	ForceUpdate bool
P
Phodal Huang 已提交
13 14 15 16 17 18 19
}

var (
	analysisCmdConfig AnalysisCmdConfig
)

var analysisCmd = &cobra.Command{
P
Phodal HUANG 已提交
20
	Use:   "analysis",
P
Phodal Huang 已提交
21
	Short: "analysis code",
P
Phodal HUANG 已提交
22 23
	Long:  ``,
	Run: func(cmd *cobra.Command, args []string) {
24
		importPath := analysisCmdConfig.Path
P
Phodal HUANG 已提交
25

P
Phodal Huang 已提交
26
		identifierApp := analysis.NewJavaIdentifierApp()
P
Phodal Huang 已提交
27 28 29
		iNodes := identifierApp.AnalysisPath(importPath)

		identModel, _ := json.MarshalIndent(iNodes, "", "\t")
P
Phodal Huang 已提交
30
		cmd_util.WriteToCocaFile("identify.json", string(identModel))
P
Phodal Huang 已提交
31 32 33 34

		var classes []string = nil

		for _, node := range iNodes {
P
Phodal Huang 已提交
35
			classes = append(classes, node.Package+"."+node.NodeName)
P
Phodal HUANG 已提交
36
		}
P
Phodal Huang 已提交
37

P
Phodal Huang 已提交
38
		callApp := analysis.NewJavaFullApp()
P
Phodal Huang 已提交
39 40 41

		callNodes := callApp.AnalysisPath(importPath, classes, iNodes)
		cModel, _ := json.MarshalIndent(callNodes, "", "\t")
P
Phodal Huang 已提交
42
		cmd_util.WriteToCocaFile("deps.json", string(cModel))
P
Phodal HUANG 已提交
43 44 45 46
	},
}

func init() {
P
Phodal Huang 已提交
47 48
	rootCmd.AddCommand(analysisCmd)

P
Phodal Huang 已提交
49
	analysisCmd.PersistentFlags().StringVarP(&analysisCmdConfig.Path, "path", "p", ".", "example -p core/main")
50
	analysisCmd.PersistentFlags().BoolVarP(&analysisCmdConfig.ForceUpdate, "force", "f", false, "force update -f")
P
Phodal HUANG 已提交
51
}