web-dev-qa-db-ja.com

Scalaのコードカバレッジツール

Scalaで利用可能なコードカバレッジツールは何ですか?

ScalaスペックテストとHudson継続的インテグレーションのセットアップがあります。コードカバレッジを測定および追跡するためにこのセットアップにフックできるものはありますか?

46
arnab

SCCTは、カバレッジデータを収集するためにクラスをインストルメント化するコンパイラプラグインです。

http://mtkopone.github.com/scct/

18
Joni

ndercover は少し良いです。

9
user152392

Cobertura を使用します。ただし、どのJavaカバレッジツールでも問題なく動作するはずです。唯一の問題は、カバレッジリストに自動生成されたクラスが多数含まれることです。これはwhile Scalaは非常に自然なJVMバイトコードにコンパイルされるため、遅延評価などの一般的な機能機能に対応するために、不自然に多数のクラスを生成する必要があります。

9
Daniel Spiewak

非主流言語(Scalaなど)の問題の1つは、ツールを構築するのが難しいため、ツールを見つけるのが難しいことです。

このテクニカルペーパー 任意の言語のブランチカバレッジを簡単に (私は著者です)一般的なツール構築インフラストラクチャを使用して、この問題を回避するのに役立つ体系的な方法で言語のテストカバレッジツールを構築する方法について説明します。

Java、C#、COBOL、C、C++、PL/SQLなどのテストカバレッジツール この方法で実装しました。これには、インストルメンテーション、データ収集、テストカバレッジの表示とレポートが含まれます。このようにScalaを実装するのは簡単です。

他の回答によって提示されたソリューションは、Scala( "auto genreated classes")の実装から紛らわしい情報を生み出します。開発者が見たいのは、コードに関するカバレッジデータです。私たちがインストルメントを使用するアプローチソースコードであるため、結果は完全に、ソースコードに関してのみ記述されます。テストカバレッジビューアでさえ、カバレッジ情報でカバーされたソースコードを表示します。

8
Ira Baxter

xsbt-coveralls-plugin というSBTプラグインをまとめました。これは、内部でscctを使用しますが、結果を http://coveralls.io に公開します。

免責事項:私は昨日(2013年3月10日)にこのプラグインを作成したばかりなので、完璧であるとは期待しないでくださいまだですが、バグや機能リクエストをgithubページに送信してください

それでも、カバレッジレポートをコード化して一般に公開するのは良いことです。結果の例をチェックしてください ここ

3
theon

私はジャココを使います。コンパイルまたはランタイムの依存関係、特別なインストルメンテーションフェーズなしでオンザフライでインストルメントクラスを必要としません。

また、Sonarと統合され、MavenCentralで公開されました。

次に例を示します: https://github.com/Godin/sonar-experiments/tree/master/jacoco-examples/scala-example

より良いレポートを追加したいと思います。生成されたクラス/メソッドを除く、より詳細なブランチカバレッジmakrupであり、ScalaDocのように便利です(たとえば、SCCTレポートを参照)。

2