次のように、コマンド ラインで MSBUILD を使用してソリューションをビルドします。
msbuild %SOLUTION% /m /fl /flp:LogFile="%OUTPUTFILE%" /p:Configuration=%BUILDCONFIG% /p:RunCodeAnalysis=True
/p:RunCodeAnalysis=True
ネイティブ (PREfast) コードとマネージ (FxCop) コードの両方のコード分析結果を作成することはできますが、私の問題は、ネイティブ コードの分析結果ファイルが、マネージ コードの結果の場合のように配置されないこと$(OutDir)
です。obj
代わりに、各アセンブリ (= )のフォルダーに格納されます$(IntDir)
。
標準ターゲットファイルへのパスを追跡しMicrosoft.CodeAnalysis.Targets
、行を変更しました
<MergedOutputCodeAnalysisFile>$(IntDir)vc.nativecodeanalysis.all.xml</MergedOutputCodeAnalysisFile>
に
<MergedOutputCodeAnalysisFile>$(OutDir)$(TargetName).nativecodeanalysis.TEST.xml</MergedOutputCodeAnalysisFile>
それは機能しましたが、すべての開発者に自分のシステムでこのファイルを変更するように依頼することはできないため、プロジェクト ファイル内でこれを設定する方法が必要です。私はすでに次の方法を試しましたが、成功しませんでした:
各プロジェクト ファイル (ルート レベル) にプロパティを追加します。
<PropertyGroup> <OutputCodeAnalysisFile>$(OutDir)$(TargetName).NativeCodeAnalysis.TEST.xml</OutputCodeAnalysisFile> </PropertyGroup>
目的のプロパティ値を指定して MSBUILD を呼び出します。
msbuild %SOLUTION% /m /fl /flp:LogFile="%OUTPUTFILE%" /p:Configuration=%BUILDCONFIG% /p:RunCodeAnalysis=True /p:MergedOutputCodeAnalysisFile="$(OutDir)$(TargetName).nativecodeanalysis.TEST.xml"
vcxproj
の後に次の行をファイルに追加して、ターゲット インジェクションを使用します<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
。<PropertyGroup> <RunMergeNativeCodeAnalysisDependsOn> $(RunMergeNativeCodeAnalysisDependsOn); CustomOutputNativeCodeAnalysisFile </RunMergeNativeCodeAnalysisDependsOn> </PropertyGroup> <Target Name="CustomOutputNativeCodeAnalysisFile"> <PropertyGroup> <OutputCodeAnalysisFile>$(OutDir)$(TargetName).NativeCodeAnalysis.TEST.xml</OutputCodeAnalysisFile> </PropertyGroup> </Target>
標準のコード分析ターゲットに触れずに問題を解決する方法を知っている人はいますか?