Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

「ビルド後のイベント」でコードカバレッジを計測するvsprops

タグ: VS2005 C++

大分昔に作ったVisual Studio 2005 Team Edition用プロパティシートを久しぶりに使った記念メモ。

<?xml version="1.0" encoding="shift_jis"?>
<VisualStudioPropertySheet
	ProjectType="Visual C++"
	Version="8.00"
	Name="Code Coverage"
	DeleteExtensionsOnClean="*.pdb;*.coverage"
	>
	<Tool
		Name="VCLinkerTool"
		GenerateDebugInformation="true"
		Profile="true"
	/>
	<Tool
		Name="VCNMakeTool"
		BuildCommandLine=""
		ReBuildCommandLine=""
		CleanCommandLine=""
		Output=""
		PreprocessorDefinitions=""
		IncludeSearchPath=""
		ForcedIncludes=""
		AssemblySearchPath=""
		ForcedUsingAssemblies=""
		CompileAsManaged=""
	/>
	<Tool
		Name="VCPostBuildEventTool"
		Description="コードカバレッジ情報を収集しています..."
		CommandLine="set UNIQUECOVERAGEPATH=$(OutDir)\$(ConfigurationName) %DATE:/=.% %TIME::=.%.coverage&#x0D;&#x0A;&quot;$(VSInstallDir)\Team Tools\Performance Tools\vsinstr&quot; /coverage $(Excludes) &quot;$(TargetPath)&quot;&#x0D;&#x0A;&quot;$(VSInstallDir)\Team Tools\Performance Tools\vsperfcmd&quot; /start:coverage /output:&quot;$(CoveragePath)&quot;&#x0D;&#x0A;&quot;$(TargetPath)&quot;&#x0D;&#x0A;&quot;$(VSInstallDir)\Team Tools\Performance Tools\vsperfcmd&quot; /shutdown&#x0D;&#x0A;cp &quot;$(CoveragePath)&quot; &quot;%UNIQUECOVERAGEPATH%&quot;&#x0D;&#x0A;&quot;%UNIQUECOVERAGEPATH%&quot;&#x0D;&#x0A;"
	/>
	<UserMacro
		Name="Excludes"
		Value="/exclude:std::* /exclude:stdext::* /exclude:boost::* /exclude:ATL::* /exclude:CppUnit::*"
	/>
	<UserMacro
		Name="CoveragePath"
		Value="$(OutDir)\$(ConfigurationName).coverage"
	/>
</VisualStudioPropertySheet>
  1. ↑を「CodeCoverage.vsprops」というファイル名で保存しておく
  2. プロジェクトを開く
  3. 構成マネージャでDebug構成をコピーしてCoverage構成を作る
  4. プロパティマネージャでCoverage構成に「CodeCoverage.vsprops」を加える
  5. Coverage構成をビルドする
  6. あとは「ビルド後のイベント」が勝手に成果物を起動してコードカバレッジを計測し、結果のレポートファイルを開いてくれる

コードカバレッジ

このプロパティシートはもともと「ATLやBoostを使ったライブラリをテストするCppUnitベースのユニットテスト」のコードカバレッジを計測するために作ったものなので、バイナリのインストルメント時に

/exclude:std::* /exclude:stdext::* /exclude:boost::* /exclude:ATL::* /exclude:CppUnit::*

として余計なものまで計測に含まれないようにしている。

この結果をHudson辺りで集約できれば素敵なのだが……

プロパティシート作成時に参考にしたページ:

スポンサーサイト

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://idlysphere.blog66.fc2.com/tb.php/243-3dc19b2b
この記事にトラックバックする(FC2ブログユーザー)

Appendix

タグ

Blog内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。