analysis/java/app/analysis.go

Summary

Maintainability
A
2 hrs
Test Coverage
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")
}