<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>http://www.sdmemo.com/w/index.php?action=history&amp;feed=atom&amp;title=Sonar%E3%81%A7JUnit%E3%81%AE%E3%82%AB%E3%83%90%E3%83%AC%E3%83%83%E3%82%B8%E3%82%92%E5%8F%96%E5%BE%97</id>
	<title>SonarでJUnitのカバレッジを取得 - 版の履歴</title>
	<link rel="self" type="application/atom+xml" href="http://www.sdmemo.com/w/index.php?action=history&amp;feed=atom&amp;title=Sonar%E3%81%A7JUnit%E3%81%AE%E3%82%AB%E3%83%90%E3%83%AC%E3%83%83%E3%82%B8%E3%82%92%E5%8F%96%E5%BE%97"/>
	<link rel="alternate" type="text/html" href="http://www.sdmemo.com/w/index.php?title=Sonar%E3%81%A7JUnit%E3%81%AE%E3%82%AB%E3%83%90%E3%83%AC%E3%83%83%E3%82%B8%E3%82%92%E5%8F%96%E5%BE%97&amp;action=history"/>
	<updated>2026-04-21T14:28:07Z</updated>
	<subtitle>このウィキのこのページに関する変更履歴</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://www.sdmemo.com/w/index.php?title=Sonar%E3%81%A7JUnit%E3%81%AE%E3%82%AB%E3%83%90%E3%83%AC%E3%83%83%E3%82%B8%E3%82%92%E5%8F%96%E5%BE%97&amp;diff=384&amp;oldid=prev</id>
		<title>Admin: ページの作成: {{Template:Stub}}  Category:ソフトウェア開発  本ページは、SonarでJUnitのカバレッジを取得する手順を記述します。ビルドツールはAnt、...</title>
		<link rel="alternate" type="text/html" href="http://www.sdmemo.com/w/index.php?title=Sonar%E3%81%A7JUnit%E3%81%AE%E3%82%AB%E3%83%90%E3%83%AC%E3%83%83%E3%82%B8%E3%82%92%E5%8F%96%E5%BE%97&amp;diff=384&amp;oldid=prev"/>
		<updated>2011-05-05T12:25:45Z</updated>

		<summary type="html">&lt;p&gt;ページの作成: {{Template:Stub}}  &lt;a href=&quot;/wiki/%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA:%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E9%96%8B%E7%99%BA&quot; title=&quot;カテゴリ:ソフトウェア開発&quot;&gt;Category:ソフトウェア開発&lt;/a&gt;  本ページは、SonarでJUnitのカバレッジを取得する手順を記述します。ビルドツールはAnt、...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;新規ページ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Template:Stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:ソフトウェア開発]]&lt;br /&gt;
&lt;br /&gt;
本ページは、SonarでJUnitのカバレッジを取得する手順を記述します。ビルドツールはAnt、カバレッジツールはCoberturaを使用しています。&lt;br /&gt;
&lt;br /&gt;
Sonarの手順は[[Ant,Jenkins,Sonarの導入手順]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 環境 ==&lt;br /&gt;
&lt;br /&gt;
* OS : CentOS 5.5&lt;br /&gt;
* Jenkins : 1.409&lt;br /&gt;
* Sonar : 2.7 &lt;br /&gt;
* Ant : 1.8.2&lt;br /&gt;
* JUnit : 4.8.2&lt;br /&gt;
* Cobertura : 1.9.4.1&lt;br /&gt;
&lt;br /&gt;
== 導入手順 ==&lt;br /&gt;
&lt;br /&gt;
=== Sonar測定用Javaプロジェクトの用意 ===&lt;br /&gt;
&lt;br /&gt;
Sonar測定用Javaプロジェクトを作成し、Subversionリポジトリにコミットします。&lt;br /&gt;
&lt;br /&gt;
=== JUnitのjarを取得 ===&lt;br /&gt;
&lt;br /&gt;
入手先 : http://www.junit.org/&lt;br /&gt;
&lt;br /&gt;
「junit-4.8.2.jar」をJavaプロジェクトの「lib」ディレクトリに保存します。（「lib」ディレクトリは例なので適宜変更しても問題ありません）&lt;br /&gt;
&lt;br /&gt;
=== hamcrestのjarを取得 ===&lt;br /&gt;
&lt;br /&gt;
入手先 : http://code.google.com/p/hamcrest/&lt;br /&gt;
&lt;br /&gt;
JUnitの動作に必要なhamcrestを取得します。「hamcrest-core-1.3.0RC2.jar」をJavaプロジェクトの「lib」ディレクトリに保存します。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Cobertureのjarを取得 ===&lt;br /&gt;
&lt;br /&gt;
入手先 : http://cobertura.sourceforge.net/&lt;br /&gt;
&lt;br /&gt;
「cobertura-1.9.4.1-bin.zip」をダウンロード後解凍し、「cobertura-1.9.4.1」ディレクトリをJavaプロジェクトの「「lib」ディレクトリに保存します。&lt;br /&gt;
&lt;br /&gt;
=== build.xml作成 ===&lt;br /&gt;
&lt;br /&gt;
build.xmlファイルの例を以下に記述します。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;project name=&amp;quot;sample&amp;quot; default=&amp;quot;compile&amp;quot; basedir=&amp;quot;.&amp;quot; xmlns:sonar=&amp;quot;antlib:org.sonar.ant&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;description&amp;gt;Sonarサンプル&amp;lt;/description&amp;gt;&lt;br /&gt;
	&amp;lt;property environment=&amp;quot;env&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;src&amp;quot; location=&amp;quot;src&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;build&amp;quot; location=&amp;quot;bin&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;dist&amp;quot;  location=&amp;quot;dist&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;instrument&amp;quot;  location=&amp;quot;instrument&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;report&amp;quot;  location=&amp;quot;report&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;property name=&amp;quot;cobertura&amp;quot; location=&amp;quot;lib/cobertura-1.9.4.1&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;taskdef uri=&amp;quot;antlib:org.sonar.ant&amp;quot; resource=&amp;quot;org/sonar/ant/antlib.xml&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;classpath path=&amp;quot;${env.ANT_HOME}/lib/sonar-ant-task-1.0.jar&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/taskdef&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;path id=&amp;quot;cobertura.classpath&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;fileset dir=&amp;quot;${cobertura}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;include name=&amp;quot;cobertura.jar&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;include name=&amp;quot;lib/**/*.jar&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/fileset&amp;gt;&lt;br /&gt;
	&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;taskdef classpathref=&amp;quot;cobertura.classpath&amp;quot; resource=&amp;quot;tasks.properties&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;init&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;tstamp/&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${build}&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;compile&amp;quot; depends=&amp;quot;init&amp;quot; description=&amp;quot;compile the source&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;javac srcdir=&amp;quot;${src}&amp;quot; destdir=&amp;quot;${build}&amp;quot; includeantruntime=&amp;quot;false&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; debug=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;classpath&amp;gt;&lt;br /&gt;
				&amp;lt;pathelement path=&amp;quot;lib/junit-4.8.2.jar&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/classpath&amp;gt;&lt;br /&gt;
		&amp;lt;/javac&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;instrument&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;cobertura-instrument todir=&amp;quot;${instrument}&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;fileset dir=&amp;quot;${build}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;include name=&amp;quot;**/*.class&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;exclude name=&amp;quot;**/*Test.class&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/fileset&amp;gt;&lt;br /&gt;
		&amp;lt;/cobertura-instrument&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;test&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;mkdir dir=&amp;quot;${report}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;junit fork=&amp;quot;yes&amp;quot; haltonfailure=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;formatter type=&amp;quot;xml&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;classpath&amp;gt;&lt;br /&gt;
				&amp;lt;pathelement location=&amp;quot;${instrument}&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;pathelement location=&amp;quot;${build}&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;pathelement path=&amp;quot;${cobertura}/cobertura.jar&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;pathelement path=&amp;quot;lib/junit-4.8.2.jar&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;pathelement path=&amp;quot;lib/hamcrest-core-1.3.0RC2.jar&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/classpath&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;batchtest todir=&amp;quot;${report}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;fileset dir=&amp;quot;${src}&amp;quot;&amp;gt;&lt;br /&gt;
					&amp;lt;include name=&amp;quot;**/*Test.java&amp;quot; /&amp;gt;&lt;br /&gt;
				&amp;lt;/fileset&amp;gt;&lt;br /&gt;
			&amp;lt;/batchtest&amp;gt;&lt;br /&gt;
&lt;br /&gt;
		&amp;lt;/junit&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;report&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;cobertura-report format=&amp;quot;xml&amp;quot; destdir=&amp;quot;${report}&amp;quot; &amp;gt;&lt;br /&gt;
			&amp;lt;fileset dir=&amp;quot;${src}&amp;quot;&amp;gt;&lt;br /&gt;
				&amp;lt;include name=&amp;quot;**/*.java&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/fileset&amp;gt;&lt;br /&gt;
		&amp;lt;/cobertura-report&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;sonar&amp;quot; description=&amp;quot;analyze project&amp;quot; &amp;gt;&lt;br /&gt;
		&amp;lt;sonar:sonar workDir=&amp;quot;/tmp/sonar/test10&amp;quot; key=&amp;quot;com.example.test10:test10&amp;quot; version=&amp;quot;0.1&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.jdbc.url&amp;quot; value=&amp;quot;jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;amp;amp;characterEncoding=utf8&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.jdbc.driverClassName&amp;quot; value=&amp;quot;com.mysql.jdbc.Driver&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.jdbc.username&amp;quot; value=&amp;quot;sonar&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.jdbc.password&amp;quot; value=&amp;quot;sonar&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.host.url&amp;quot; value=&amp;quot;http://&amp;lt;SONAR_HOST_NAME&amp;gt;:8080/sonar&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.sourceEncoding&amp;quot; value=&amp;quot;UTF-8&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.java.source&amp;quot; value=&amp;quot;1.6&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.java.target&amp;quot; value=&amp;quot;1.6&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;sources&amp;gt;&lt;br /&gt;
				&amp;lt;path location=&amp;quot;${src}&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;/sources&amp;gt;&lt;br /&gt;
&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.projectName&amp;quot; value=&amp;quot;Sonarサンプル&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.dynamicAnalysis&amp;quot; value=&amp;quot;reuseReports&amp;quot; /&amp;gt;&lt;br /&gt;
			&amp;lt;property key=&amp;quot;sonar.cobertura.reportPath&amp;quot; value=&amp;quot;${report}/coverage.xml&amp;quot;  /&amp;gt;&lt;br /&gt;
		&amp;lt;/sonar:sonar&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
	&amp;lt;target name=&amp;quot;clean&amp;quot; description=&amp;quot;clean up&amp;quot; &amp;gt;&lt;br /&gt;
		&amp;lt;delete dir=&amp;quot;${build}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;delete dir=&amp;quot;${instrument}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;delete dir=&amp;quot;${report}&amp;quot;/&amp;gt;&lt;br /&gt;
		&amp;lt;delete file=&amp;quot;cobertura.ser&amp;quot;/&amp;gt;&lt;br /&gt;
	&amp;lt;/target&amp;gt;&lt;br /&gt;
&amp;lt;/project&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;SONAR_HOST_NAME&amp;gt;にSoanrが動作しているホスト名を入力してください。&lt;br /&gt;
&lt;br /&gt;
テスト用クラスの名前は「～Test」としていることを前提としています。&lt;br /&gt;
&lt;br /&gt;
Ant書式の参考 :&lt;br /&gt;
* http://cobertura.sourceforge.net/anttaskreference.html&lt;br /&gt;
* http://ant.apache.org/manual/Tasks/junit.html&lt;br /&gt;
&lt;br /&gt;
== 実行 ==&lt;br /&gt;
&lt;br /&gt;
Jenkinsで新規Jobを作成します。Antのターゲットは「compile instrument test report sonar」とします。&lt;br /&gt;
&lt;br /&gt;
[[ファイル:Ant sonar coverage 01.png|400px]]&lt;br /&gt;
&lt;br /&gt;
JenkinsでJobを実行します。&lt;br /&gt;
&lt;br /&gt;
[[ファイル:Ant sonar coverage 02.png|600px]]&lt;br /&gt;
&lt;br /&gt;
実行後、Sonarのダッシュボードにカバレッジ率が表示されています。&lt;br /&gt;
&lt;br /&gt;
[[ファイル:Ant sonar coverage 03.png|600px]]&lt;br /&gt;
&lt;br /&gt;
[[ファイル:Ant sonar coverage 04.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== 更新履歴 ==&lt;br /&gt;
&lt;br /&gt;
* ページ作成 -- 2011年5月5日 (木) 21:25 (JST)&lt;/div&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
</feed>