我们的项目在一些单元测试方法中也使用了 assertj 库中的assert方法。因此,当前搜索断言方法的密码规则不会识别如下断言方法并将它们标记为违规。
assertThat("x").isEqualTo("Y"); 在单元测试方法中。
如何修改脚本以考虑来自单元测试方法的任何“assert*”调用。
<cypher><![CDATA[
MATCH
(c:Type:Class)-[:DECLARES]->(m:Method:JunitTestMethod),
(m)-[:INVOKES*..10]->(assert:Method)
WHERE
assert.signature =~ "void assert.*"
OR assert.signature =~ "void fail.*"
OR assert.signature =~ "void verify.*"
SET
m:JunitTestWithAssert
RETURN
c.fqn AS TestClass, m.name AS TestMethodWithAssert
]]></cypher>
样品测试方法:
@Test
public void testAssertWithDiffLibrary() {
String testName = "Hello";
assertThat(testName).isEqualTo("Hello");
}
注意:尝试添加 where 子句“OR assert.name =~”。断言。"" 但没有检测到这些断言。