未验证 提交 ea34e11a 编写于 作者: P Phodal Huang

refactoring: extract count

上级 0cf1a948
......@@ -4,6 +4,7 @@ import (
"encoding/json"
"github.com/olekukonko/tablewriter"
"github.com/phodal/coca/config"
"github.com/phodal/coca/core/domain/count"
"github.com/phodal/coca/core/models"
"github.com/phodal/coca/core/support"
"github.com/spf13/cobra"
......@@ -40,32 +41,12 @@ var countCmd = &cobra.Command{
_ = json.Unmarshal(file, &cparsedDeps)
var projectMethods = make(map[string]bool)
for _, clz := range cparsedDeps {
for _, method := range clz.Methods {
projectMethods[clz.Package+"."+clz.Class+"."+method.Name] = true
}
}
// TODO: support identify data class
var callMap = make(map[string]int)
for _, clz := range cparsedDeps {
for _, call := range clz.MethodCalls {
callMethod := call.Package + "." + call.Class + "." + call.MethodName
if projectMethods[callMethod] {
if callMap[callMethod] == 0 {
callMap[callMethod] = 1
} else {
callMap[callMethod]++
}
}
}
}
callMap := count.BuildCallMap(cparsedDeps)
callMapSort := support.RankByWordCount(callMap)
if *&countCmdConfig.Top > 0 {
callMapSort = callMapSort[:*&countCmdConfig.Top]
if countCmdConfig.Top > 0 {
callMapSort = callMapSort[:countCmdConfig.Top]
}
table := tablewriter.NewWriter(os.Stdout)
......
package count
import "github.com/phodal/coca/core/models"
func BuildCallMap(cparsedDeps []models.JClassNode) map[string]int {
var projectMethods = make(map[string]bool)
for _, clz := range cparsedDeps {
for _, method := range clz.Methods {
projectMethods[clz.Package+"."+clz.Class+"."+method.Name] = true
}
}
// TODO: support identify data class
var callMap = make(map[string]int)
for _, clz := range cparsedDeps {
for _, call := range clz.MethodCalls {
callMethod := call.Package + "." + call.Class + "." + call.MethodName
if projectMethods[callMethod] {
if callMap[callMethod] == 0 {
callMap[callMethod] = 1
} else {
callMap[callMethod]++
}
}
}
}
return callMap
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册