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

feat: make return to evaluate api

上级 7cb45d22
......@@ -59,6 +59,8 @@ func (s *JavaIdentifierListener) EnterClassDeclaration(ctx *parser.ClassDeclarat
}
}
}
currentMethod = models.NewJMethod()
}
func (s *JavaIdentifierListener) ExitClassBody(ctx *parser.ClassBodyContext) {
......@@ -215,8 +217,7 @@ func (s *JavaIdentifierListener) EnterExpression(ctx *parser.ExpressionContext)
statementCtx := ctx.GetParent().(*parser.StatementContext)
firstChild := statementCtx.GetChild(0).(antlr.ParseTree).GetText()
if strings.ToLower(firstChild) == "return" {
hasNull := strings.Contains(ctx.GetText(), "null")
currentMethod.IsReturnNull = hasNull
currentMethod.IsReturnNull = strings.Contains(ctx.GetText(), "null")
}
}
}
......
......@@ -81,5 +81,5 @@ func TestNullPointException(t *testing.T) {
analyser := NewEvaluateAnalyser()
result := analyser.Analysis(callNodes, identifiers)
g.Expect(result.Nullable.Items[0]).To(Equal("nonnull.Name.orElseNull"))
g.Expect(len(result.Nullable.Items)).To(Equal(2))
}
......@@ -12,13 +12,16 @@ func (NullPointException) Evaluate(*EvaluateModel, models.JClassNode) {
}
func (n NullPointException) EvaluateList(evaluateModel *EvaluateModel, nodes []models.JClassNode, nodeMap map[string]models.JClassNode, identifiers []models.JIdentifier) {
var nullableList []string
var nullableList []string = nil
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)
if method.IsReturnNull {
nullableList = append(nullableList, buildMethodPath(ident, method))
} else {
for _, annotation := range method.Annotations {
if annotation.QualifiedName == "Nullable" {
nullableList = append(nullableList, buildMethodPath(ident, method))
}
}
}
}
......@@ -26,3 +29,7 @@ func (n NullPointException) EvaluateList(evaluateModel *EvaluateModel, nodes []m
evaluateModel.Nullable.Items = nullableList
}
func buildMethodPath(ident models.JIdentifier, method models.JMethod) string {
return ident.Package + "." + ident.ClassName + "." + method.Name
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册