【发布时间】:2016-11-09 09:58:41
【问题描述】:
我们正在运行带有 Java 插件 3.14 的 Sonarqube 5.5,并通过调用“mvn clean deploy sonar:sonar”的 sonar-maven-plugin 版本 3.0.2 进行分析。
当测试代码包含以下内容时,我们仍然会收到关于缺少 assertThat 的违规“向此测试用例添加至少一个断言”。
import static org.hamcrest.Matchers.hasSize;
import static org.junit.Assert.assertThat;
[...]
@Test
public void testByClassicCompare() throws InvalidPropertiesFormatException {
final CompareFilter compareFilter = new CompareFilter("gid", 333, Operation.LT);
assertThat(findAll(compareFilter), hasSize(1));
}
findAll() 是测试类中的一个方法。它只是调用一些休眠查找器并返回一个对象集合:
protected Collection<MyObject> findAll(final HbnFilter filter)
更新: 当我们将断言更改为以下内容时,声纳会识别断言。
assertThat(findAll(compareFilter).size(), eq(1));
【问题讨论】:
-
什么是“findAll”方法?你在用 maven 分析你的项目吗?如果不是,您如何为分析提供字节码?由于 java 插件 4.0 版(需要 SQ LTS 5.6)对类型推断进行了很多改进,您可以尝试这个版本吗?
-
@benzonico 我根据您的输入更新了问题。虽然提到的项目已经是 java 8,但我们必须将所有其他项目迁移到 java 8,直到我们可以将 SQ 从 5.5 更新到 5.6 LTS
-
Java 8 需要运行分析器和 sonarqube 服务器,但您仍然可以分析不是 java 8 的项目。
-
请指定 findAll 方法的完整签名。
-
@benzonico 方法签名添加
标签: sonarqube