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

refactor: try to build evalute model

上级 87ca427a
......@@ -14,9 +14,10 @@ func NewEvaluateAnalyser() Analyser {
return *&Analyser{}
}
func (a Analyser) Analysis(classNodes []models.JClassNode, identifiers []models.JIdentifier) {
func (a Analyser) Analysis(classNodes []models.JClassNode, identifiers []models.JIdentifier) evaluator.EvaluateModel {
var servicesNode []models.JClassNode = nil
var evaluation Evaluation
var result evaluator.EvaluateModel = evaluator.NewEvaluateModel()
var nodeMap = make(map[string]models.JClassNode)
for _, node := range classNodes {
......@@ -32,5 +33,10 @@ func (a Analyser) Analysis(classNodes []models.JClassNode, identifiers []models.
}
evaluation = Evaluation{evaluator.Service{}}
evaluation.EvaluateList(servicesNode, nodeMap, identifiers)
evaluation.EvaluateList(result, servicesNode, nodeMap, identifiers)
nullableEva := Evaluation{evaluator.NullException{}}
nullableEva.EvaluateList(result, servicesNode, nodeMap, identifiers)
return result
}
......@@ -29,6 +29,7 @@ func Test_Service_LifeCycle(t *testing.T) {
_ = json.Unmarshal(file, &parsedDeps)
analyser.Analysis(parsedDeps, nil)
// Todo Refactoring use read/write file
g.Expect(true).To(Equal(true))
}
......@@ -41,6 +42,8 @@ func Test_Service_Same_Return_Type(t *testing.T) {
_ = json.Unmarshal(file, &parsedDeps)
analyser.Analysis(parsedDeps, nil)
// Todo Refactoring use read/write file
g.Expect(true).To(Equal(true))
}
......@@ -53,5 +56,7 @@ func Test_Long_Parameters(t *testing.T) {
_ = json.Unmarshal(file, &parsedDeps)
analyser.Analysis(parsedDeps, nil)
// Todo Refactoring use read/write file
g.Expect(true).To(Equal(true))
}
\ No newline at end of file
package evaluate
import "github.com/phodal/coca/core/models"
import (
"github.com/phodal/coca/core/domain/evaluate/evaluator"
"github.com/phodal/coca/core/models"
)
type Evaluator interface {
Evaluate(node models.JClassNode)
EvaluateList(nodes []models.JClassNode, nodeMap map[string]models.JClassNode, identifiers []models.JIdentifier)
Evaluate(result evaluator.EvaluateModel, node models.JClassNode)
EvaluateList(evaluateModel evaluator.EvaluateModel, nodes []models.JClassNode, nodeMap map[string]models.JClassNode, identifiers []models.JIdentifier)
}
type Evaluation struct {
Evaluator Evaluator
}
func (o *Evaluation) Evaluate(node models.JClassNode) {
o.Evaluator.Evaluate(node)
func (o *Evaluation) Evaluate(result evaluator.EvaluateModel, node models.JClassNode) {
o.Evaluator.Evaluate(result, node)
}
func (o *Evaluation) EvaluateList(nodes []models.JClassNode, nodeMap map[string]models.JClassNode, identifiers []models.JIdentifier) {
o.Evaluator.EvaluateList(nodes, nodeMap, nil)
func (o *Evaluation) EvaluateList(evaluateModel evaluator.EvaluateModel, nodes []models.JClassNode, nodeMap map[string]models.JClassNode, identifiers []models.JIdentifier) {
o.Evaluator.EvaluateList(evaluateModel, nodes, nodeMap, identifiers)
}
......@@ -8,10 +8,10 @@ type Empty struct {
}
func (Empty) Evaluate(models.JClassNode) {
func (Empty) Evaluate(EvaluateModel, models.JClassNode) {
}
func (Empty) EvaluateList([]models.JClassNode, map[string]models.JClassNode, []models.JIdentifier) {
func (Empty) EvaluateList(EvaluateModel, []models.JClassNode, map[string]models.JClassNode, []models.JIdentifier) {
}
\ No newline at end of file
package evaluator
type Nullable struct {
Items []string
}
type ServiceIssues struct {
LifecycleMap map[string]string
}
type EvaluateModel struct {
Nullable Nullable
ServiceIssues ServiceIssues
}
func NewEvaluateModel() EvaluateModel {
return *&EvaluateModel{Nullable: Nullable{Items: nil}}
}
......@@ -5,9 +5,24 @@ import (
)
type NullException struct {
}
func (NullException) Evaluate(EvaluateModel, models.JClassNode) {
}
func (NullException) EvaluateList([]models.JClassNode, map[string]models.JClassNode, []models.JIdentifier) {
func (n NullException) EvaluateList(evaluateModel EvaluateModel, nodes []models.JClassNode, classNodeMap map[string]models.JClassNode, identifiers []models.JIdentifier) {
var nullableList []string
for _, ident := range identifiers {
for _, method := range ident.Methods {
for _, annotation := range method.Annotations {
if annotation.QualifiedName == "Nullable" {
methodPath := ident.Package + "." + ident.ClassName + "." + method.Name
nullableList = append(nullableList, methodPath)
}
}
}
}
evaluateModel.Nullable.Items = nullableList
}
......@@ -11,17 +11,17 @@ import (
type Service struct {
}
var nodeMap map[string]models.JClassNode
var serviceNodeMap map[string]models.JClassNode
var returnTypeMap map[string][]string
var longParameterList []models.JMethod
func (s Service) EvaluateList(nodes []models.JClassNode, classNodeMap map[string]models.JClassNode, identifiers []models.JIdentifier) {
nodeMap = classNodeMap
func (s Service) EvaluateList(evaluateModel EvaluateModel, nodes []models.JClassNode, nodeMap map[string]models.JClassNode, identifiers []models.JIdentifier) {
serviceNodeMap = nodeMap
longParameterList = nil
returnTypeMap = make(map[string][]string)
for _, node := range nodes {
s.Evaluate(node)
s.Evaluate(evaluateModel, node)
}
findRelatedMethodParameter(longParameterList)
......@@ -49,7 +49,7 @@ func findRelatedMethodParameter(list []models.JMethod) {
}
}
func (s Service) Evaluate(node models.JClassNode) {
func (s Service) Evaluate(result EvaluateModel, node models.JClassNode) {
var methodNameArray [][]string
for _, method := range node.Methods {
methodNameArray = append(methodNameArray, SplitCamelcase(method.Name))
......@@ -83,7 +83,7 @@ func (s Service) Evaluate(node models.JClassNode) {
if !s.isJavaType(method) {
methodType := method.Type
if _, ok := nodeMap[methodType]; ok {
if _, ok := serviceNodeMap[methodType]; ok {
fullMethodName := node.Package + "." + node.Class + "." + method.Name
returnTypeMap[methodType] = append(returnTypeMap[methodType], fullMethodName)
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册