2
我們使用Java插件3.14運行Sonarqube 5.5,並通過sonar-maven-plugin 3.0.2版本調用「mvn clean deploy sonar:sonar」進行分析。爲什麼我們的Hamcrest斷言不被認爲是規則S2699的有效斷言?
我們仍然有違反「至少添加一個斷言到這個測試用例」關於缺少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
@benzonico我根據你的輸入更新了問題。雖然上述項目已經是java 8,但我們必須將所有其他項目遷移到java 8,直到我們可以將SQ從5.5更新爲5.6 LTS –
運行分析器和sonarqube服務器需要Java 8,但仍然可以分析項目不是java 8. – benzonico