2016-07-07 5 views
2

Javaプラグイン3.14でSonarqube 5.5を実行していて、 "mvn clean deploy sonar:sonar"というsonar-maven-pluginバージョン3.0.2で分析しています。私たちの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)); 
+0

「findAll」メソッドとは何ですか?プロジェクトをMavenで分析していますか?あなたがバイトコードを分析にどのように提供していないのでしょうか?バージョン4.0のjavaプラグイン(SQ LTS 5.6が必要です)で型推論が大幅に改善されたので、このバージョンを試すことができますか? – benzonico

+0

@benzonicoあなたのご意見に基づいて質問を更新しました。前述のプロジェクトはすでにjava 8ですが、SQを5.5から5.6に更新するまで、他のすべてのプロジェクトをjava 8に移行する必要があります。 –

+0

アナライザーとsonarqubeサーバーを実行するにはJava 8が必要ですが、 java 8ではありません。 – benzonico

答えて

0

ここに根本的な原因は、使用してJUnitののassertThat方法であって、その代わりHamcrestの一つで

import static org.junit.Assert.assertThat; 

import static org.hamcrest.MatcherAssert.assertThat; 

私は最近problem with the same solutionに直面してきました。

関連する問題