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

feat: [tbs] add unknown test

上级 58b29c2a
......@@ -2,6 +2,7 @@ package tbs
import (
"github.com/phodal/coca/core/models"
"strings"
)
type TbsApp struct {
......@@ -30,17 +31,37 @@ func (a TbsApp) AnalysisPath(deps []models.JClassNode, identifiersMap map[string
}
var methodCallMap = make(map[string][]models.JMethodCall)
var hasAssert = false
for _, methodCall := range method.MethodCalls {
checkRedundantPrintTest(clz.Path, methodCall, &results)
checkSleepyTest(clz.Path, methodCall, &results)
checkDuplicateAssertTest(methodCall, clz, &results, methodCallMap)
if strings.Contains(methodCall.MethodName, "assert") {
hasAssert = true
}
}
checkUnknownTest(clz, &results, hasAssert)
}
}
return results
}
func checkUnknownTest(clz models.JClassNode, results *[]TestBadSmell, hasAssert bool) {
if !hasAssert {
tbs := *&TestBadSmell{
FileName: clz.Path,
Type: "UnknownTest",
Description: "",
Line: 0,
}
*results = append(*results, tbs)
}
}
func checkDuplicateAssertTest(methodCall models.JMethodCall, clz models.JClassNode, results *[]TestBadSmell, methodCallMap map[string][]models.JMethodCall) {
methodCallMap[methodCallName(methodCall)] = append(methodCallMap[methodCallName(methodCall)], methodCall)
if len(methodCallMap[methodCallName(methodCall)]) >= 3 {
......
......@@ -17,8 +17,9 @@ func TestTbsApp_EmptyTest(t *testing.T) {
codePath = filepath.FromSlash(codePath)
result := buildTbsResult(codePath)
g.Expect(len(result)).To(Equal(1))
g.Expect(len(result)).To(Equal(2))
g.Expect(result[0].Type).To(Equal("EmptyTest"))
g.Expect(result[1].Type).To(Equal("UnknownTest"))
}
func TestTbsApp_IgnoreTest(t *testing.T) {
......@@ -28,7 +29,7 @@ func TestTbsApp_IgnoreTest(t *testing.T) {
codePath = filepath.FromSlash(codePath)
result := buildTbsResult(codePath)
g.Expect(len(result)).To(Equal(1))
g.Expect(len(result)).To(Equal(2))
g.Expect(result[0].Type).To(Equal("IgnoreTest"))
}
......@@ -62,6 +63,17 @@ func TestTbsApp_DuplicateAssertTest(t *testing.T) {
g.Expect(result[0].Type).To(Equal("DuplicateAssertTest"))
}
func TestTbsApp_UnknownTest(t *testing.T) {
g := NewGomegaWithT(t)
codePath := "../../../_fixtures/tbs/code/UnknownTest.java"
codePath = filepath.FromSlash(codePath)
result := buildTbsResult(codePath)
g.Expect(result[0].Type).To(Equal("EmptyTest"))
g.Expect(result[1].Type).To(Equal("UnknownTest"))
}
func buildTbsResult(codePath string) []TestBadSmell {
files := support.GetJavaTestFiles(codePath)
var identifiers []models.JIdentifier
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册