問題タブ [clover]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Play で Clover を使用してコード カバレッジを実行します。Antを使ったフレームワークアプリ
Play で追加のチェックを行う Ant スクリプトを作成しています! フレームワーク アプリケーション。
現在、「自動テストの再生」への実行呼び出しを行うだけで、Ant スクリプトからテストを実行しています。
Clover を Play テストスイートに統合する方法を知っている人はいますか? 明らかに、上記を使用してテストを実行する必要はありません。
また、JUnit テストを実行する従来の方法 (つまり、Ant のターゲットを使用) を使用して Ant スクリプトを作成しようとしましたjunit
が、2 つの問題が発生しました。
- すべてのテストを実行すると、最初のテストのみが正常に実行され、他のテストは奇妙な理由で失敗しました
- スイートで 1 つのテストを公開し、テストが正常に実行された場合、コード カバレッジは 0% であると言えます。その後、clover の設定が間違っていると思いましたが、何もしないプロダクション クラスをテストする単純なクラスを作成したところ、期待どおりにカバレッジが上がりました。
したがって、ルートを下る場合は、junit
すべてのテストを実行して、次々と正常に実行できるようにする方法を知る必要があります (これは Play の実行方法を使用する場合に機能しますplay auto-test
)。 Play テストで触れられたコード行をピックアップしていないようです。
(Play 用の Cobertura モジュールがあることは知っていますが、正確なカバレッジの数値を教えてくれる Clover の方が優れていることがわかりました)
更新:残念ながら、手動でコンパイルしようとしたときにコンパイルの問題が発生したため、以前に発生していた正確なエラーを再現することはできません。Secure モジュールの使用を開始しましたが、Java ソース ファイルのみが含まれています。そのため、私の Ant スクリプトではplay precompile
、セキュア モジュールのバイト コードを生成する を呼び出します (コードを含むシステム内の他のすべてのものと同様)。そのため、Clover を使用してアプリ コードをコンパイルしようとすると、2 つのバージョンのクラス (プリコンパイル コマンド (クローバー以外) によって生成されたものと独自のコマンドによって生成されたもの) があるため、コンパイラが少し混乱するように思います。アリのコンパイル(クローバー付き):
したがって、基本的に2つの問題があります。
- コンパイルされたバージョンを持たない Play 提供のモジュール (CRUD、Secure など) にも依存するソース コードをコンパイルできる必要があるため
play precompile
、Ant スクリプトで自分自身を呼び出して回避しようとしています。 junit
コンパイルが機能するようになると、ターゲットを使用してテストを実行できないという元の問題が再び発生することは間違いありません。
更新 #2:私が得たエラーはfindById
、JPABase から House へのキャストが必要な呼び出しが原因であることが判明しました (IDE またはプレイがそれを気にしているようには見えませんでした)。そこで、play のすべての「find*」メソッドのキャストを行った後、実際に JUnit と Clover のレポートを取得しました。 ただし...現在、2種類のエラーが発生しています。
メソッドだけでなく、前述
Model
のメソッドなどの魔法のメソッドを提供するクラスを拡張することで、Play で作成されるエンティティ クラスを作成できます。Model スーパークラスは、UnsupportedOperationException をスローすることによってこれらのメソッドを実装する GenericModel を実際に拡張します。だから明らかにプレイ!これらのメソッドの実際の実装を提供するために、舞台裏でさらにいくつかの魔法を行います。残念ながら、私のテスト (および製品コード) は count などのメソッドに依存していますが、ant/junit シナリオでは例外をスローしています (注: .find
count
play auto-test
もう 1 つのエラーは、Spring モジュールを使用しているためです。クラスの 1 つ (ルート クラス) で、 を呼び出します
Spring.getBeanOfType(Some.class)
。現在、自動スキャンを使用していますが、ant/junit テスト環境では、Spring モジュールはまだ Spring コンテナーをセットアップしていないため、呼び出しは null を返します。
両方の問題を解決する魔法の修正が 1 つあるような気がしますが、その魔法の修正が何であるかはわかりません。
java - clover db のファイルサイズに 2GB の制限はありますか?
clienttests、integrationtests、および unittests 用の 3 つのクローバー データベースがあります。
総カバレッジを計算するために、これらのデータベースを新しいクローバー データベースにマージします。
先週末以来、マージされたcoveragedbファイルからレポートを生成しようとすると、次の問題が発生します。
ファイルを確認したところ、そのサイズは (Windows エクスプローラーによると) 2,08 GB (2.244.583.202 バイト) で、2 GB をわずかに超えていることがわかりました。カバレッジデータベースを保持していないため、前の週末の実行のサイズはわかりませんが、手順で他に何も変更されていないため、ここでは2GBが問題であると想定しています.
surefire - /tmp ファイルが確実なファイルでいっぱいになる
Jenkins が maven ビルドを呼び出すと、ビルド中に別のディレクトリに明示的にリダイレクトする方法で、/tmp が数百の Surefire839014140451157473tmp でいっぱいになります。クローバービルドの場合、何百もの grover53460334580.jar でいっぱいになりますか? これを乗り越えるアイデアはありますか?
そして、ラムディスクを作成するための正確なステップバイステップを知っている人がいるので、確実なものをそのラムディスクにリダイレクトできますか?ハードドライブへの書き込み時間を節約できますか?
ありがとう
java - CloverJavaヒープスペースエラー
ハドソンから実行中にJavaヒープスペースエラーが発生し、MAVEN_OPTS
以下のように設定しました。どのボディでも、この問題の解決策を教えてくれます。
unit-testing - PHPUnit HTMLとCloverのカバレッジレポートは、codeCoverageIgnoreが原因で異なります
私はPHPUnit3.5.14を使用しており、// @codeCoverageIgnore [Start | End]で特定の部分を除いて、PHPアプリケーションの100%をカバーする一連のテストを行っています。HTMLカバレッジレポートには、100%のカバレッジが表示されます。しかし、100%のカバレッジ要件を適用するためにJenkinsに読んでもらいたいClover XMLカバレッジレポートを生成すると、無視されたすべてのコードがカバーされていないものとして表示されます。
たとえば、20個のメソッドを持つコントローラークラスがあり、そのうちの1つは次のようになります。
HTMLカバレッジレポートには、完全に無視されたものを含め、カバーされた20のメソッドが表示されます。
写真:カバレッジレポートの抜粋
しかし、Clover XMLレポートは、19/20のメソッドがカバーされていることを示しており、_getFooについては言及していません。
..。
(上部の_getFoo行は596〜608行です。)
PHPUnit構成のロギングセクションは次のようになります。
Cloverカバレッジログエントリを構成する方法、またはカバレッジ無視コメントを変更して、CloverレポートがHTMLレポートと一致する100%カバレッジを示すようにする方法はありますか?
java - Clover - 自動テストなしでカバレッジを取得
私は現在、プロジェクトで使用するためのさまざまなコード カバレッジ ツールを調査しており、clover、Emma、cobertura の中で clover にショート リストされています。(私の組織はクローバーとその素晴らしいものに支払う準備ができています)
しかし、自動テストはありません。すべてのテストは手動であり、インストルメント化されたコードを使用して実行時に結果を生成する必要があります。
クローバーのウィキの最初の行は言う
コード カバレッジは、自動テストによってカバーされるコードの割合です。
clover は自動化されていないテストのカバレッジを収集できますか? つまり、要件は、コンパイル時にコードを計測し、実際にコードを実行したときにカバレッジ レポートを取得することです。グーグルで検索しましたが、最も適切な答えが見つかりませんでした。
クローバーがサポートしていない場合、それを達成するための代替手段はありますか
java - Cloverカバレッジレポートからコードを除外するにはどうすればよいですか?
クラスまたはメソッドがCloverコードカバレッジレポートに含まれないようにする方法はありますか?同じディレクトリに、本番品質コードと一緒に概念実証コードがあります。このコンセプトコードは、コードカバレッジレポートに含まれているため、数値が歪んでいます。レポートを生成するときにCloverがそれらを無視するような方法で、それらに注釈を付けたり、マークを付けたりできるかどうか疑問に思いました。
- アップデート -
カスタムアノテーションに対してmethodContextを使用するのはどうですか?
ant - ANTクローバーとソナー
クローバーとソナーのターゲットを備えた ANT ビルドがあります。サンプル コマンドは次のとおりです。
現在、私は
target を使用して、クローバー インストルメンテーションのソース ディレクトリを設定します。テストが実行され、期待どおりにクローバー レポートが表示されます。私のソナーターゲット
も正常に動作しますが、元のソース コードではなく、clover インストルメンテーション コードが処理されているようです。clover インストルメンテーション コードが findbugs で複数の違反を引き起こすため、findbugs レポートで問題が発生します。私のソナー測定基準は、壁から外れています。現在、回避策として、クローバー用とソナー用の 2 つの CI ビルドがありますが、コード カバレッジ メトリックとソナーの詳細を 1 つで取得することはできません。
clover-instr ターゲットを使用して、インストルメント化されたコードが別のディレクトリに配置されるようにしようとしましたが、コンパイルされたコードが単一のクラス ディレクトリに生成されるため、同じ問題が発生します。これを回避するために、他の開発者がどのような戦略を使用したのか疑問に思っています。
最低レベルでは、クローバー コンパイラを使用する必要があることを ant コンパイル ターゲットに示すために clover.all ターゲットによって設定されるプロパティ (つまり、-Dclover.useCompile=true|false) はありますか? デフォルトの clover.all ターゲットを実行してから、ソナー ターゲットでインストルメント化されたソース ファイルとクラス ファイルを削除し、clover オプションを指定せずに再生成して、デフォルトのソナー ターゲットを実行します。
編集 1: Clover、Ant、および Findbugsでこの項目が見つかった場合、ANT スクリプト内で 2 回コンパイルすることをお勧めします。Ant ビルドは一度だけプロパティをロードするので、ビルドの途中でプロパティを切り替えて、コンパイル タスクが 2 回実行されるようにする方法がわかりません。
hudson - ジェンキンスのクローバーコードカバレッジメトリックを調整するには?
これは私が助けを必要としているプラグインです... http://wiki.hudson-ci.org/display/HUDSON/Clover+Plugin
カバレッジ メトリック ターゲットを正しい方法で調整する方法を知りたいです。
私のコード カバレッジは、メソッド 35%、条件 0%、ステートメント 60% です。メトリックはこのように調整されます。
100% ヘルス: 10 / -1 / 10
0% ヘルス: 0 / -1 / 0
不安定: 0 / -1 / 0
Clover Coverage のおかげで、Jenkins がまだ雲を表示しているのはなぜだろうか。太陽を取り戻すためにこれらのプラグインを設定する方法は?
前もって感謝します!
maven - クローバーのターゲット出力ディレクトリを変更する(Mavenプラグイン)
MavenクローバープラグインがHTMLレポートを生成するディレクトリを変更するオプションはありますか?