analysis/java/app/analysis.go
package app
import (
"encoding/json"
"github.com/modernizing/coca/cmd/cmd_util"
"github.com/modernizing/coca/pkg/application/analysis/javaapp"
"github.com/modernizing/coca/pkg/domain/core_domain"
"github.com/spf13/cobra"
)
type AnalysisCmdConfig struct {
Path string
ForceUpdate bool
Lang string
}
var (
analysisCmdConfig AnalysisCmdConfig
)
var analysisCmd = &cobra.Command{
Use: "analysis",
Short: "analysis code",
Long: ``,
Run: func(cmd *cobra.Command, args []string) {
var outputName string
var ds []core_domain.CodeDataStruct
ds = AnalysisJava()
outputName = "deps.json"
cModel, _ := json.MarshalIndent(ds, "", "\t")
cmd_util.WriteToCocaFile(outputName, string(cModel))
},
}
func AnalysisJava() []core_domain.CodeDataStruct {
importPath := analysisCmdConfig.Path
identifierApp := javaapp.NewJavaIdentifierApp()
iNodes := identifierApp.AnalysisPath(importPath)
identModel, _ := json.MarshalIndent(iNodes, "", "\t")
cmd_util.WriteToCocaFile("identify.json", string(identModel))
callApp := javaapp.NewJavaFullApp()
callNodes := callApp.AnalysisPath(importPath, iNodes)
return callNodes
}
func init() {
rootCmd.AddCommand(analysisCmd)
analysisCmd.PersistentFlags().StringVarP(&analysisCmdConfig.Path, "path", "p", ".", "example -p core/main")
analysisCmd.PersistentFlags().StringVarP(&analysisCmdConfig.Lang, "lang", "l", "java", "example coca analysis -l java, typescript, python")
analysisCmd.PersistentFlags().BoolVarP(&analysisCmdConfig.ForceUpdate, "force", "f", false, "force update -f")
}