FAKEドキュメントは十分それを明確にしませんが、どうやらあなたは明示的に2つのうちのいずれかを指定する必要があります」と
FxCopのは、あなたが実行したいルール
- 、または
- パスをFxCopプロジェクトファイル "(拡張子が
.FxCop
のファイル)。
私は私が自分自身をやったことがないので、FxCopのプロジェクトファイルを作成する方法を教えてくれていますが、すでにそのようにしたと協力してきたのMSBuildシステムをセットアップ多分プログラマすることはできません。彼は、その後、あなたは自分のFAKEビルドスクリプトであなたのFxCop
コールに次のパラメータを追加する必要がなかった場合:
ProjectFile = buildDir </> "filename.FxCop"
filename
、当然のことながら、実際のファイル名に置き換える必要があります。
FxCop
プロジェクトファイルがない場合は、明らかに、RuleLibraries
パラメータにFxCopルールのリストを明示的に指定する必要があります。まず、利用可能なFxCopルールを見つける必要があります。これを行うには、Rules
フォルダのFxCopインストールディレクトリ(私のシステムでは、古いバージョンのFxCopがインストールされていますが、それはC:\Program Files (x86)\Microsoft FxCop 1.36
でしたが、あなたとは異なる場合があります)を見てください。そのフォルダには複数のDLLが含まれている必要があります。例えば、私のシステムで、Rules
フォルダが含まれる:
- をDesignRules.dll
- GlobalizationRules.dll
- InteroperabilityRules.dll
...と私はいくつかの他のDLL入力を気にするつもりはありません。今、あなただけのF#のリストにファイル名のリストを作る:
RulesLibraries = ["DesignRules.dll"; "GlobalizationRules.dll"] // and so on
はそのための適切なデフォルト値があるはずですが、あなたは手でルールのリストを指定する必要がありますように、現在、それが見えます。したがって、このようなものを見て、あなたの目標を書いてみてください。
Target "FxCop" (fun _ ->
!! (buildDir + "/**/*.dll")
++ (buildDir + "/**/*.exe")
|> FxCop (fun p ->
{p with
//Override default parameters
ReportFileName = testDir + "FXCopResults.xml";
RulesLibraries = ["DesignRules.dll"; "GlobalizationRules.dll"] // etc.
ToolPath = "D:/Fake/FAKE-Calculator/tools/FxCop/FxCopCmd.exe"})
)
;
(セミコロン)を使用して、リスト項目を区切ることを忘れないでください:F#で、,
(カンマ)文字がタプルに対してのみです。私の例をそのままそのままコピーするのではなく、FxCopのインストールディレクトリを見て、利用可能なDLLのルールを確認し、それらを含めるようにしてください。 (あなたのプロジェクトが実際に必要としているものと同じくらい、あるいは少ない)。
また、実際に.dll
拡張子を指定する必要があるかどうかはわかりません。 ["DesignRules"; "GlobalizationRules"]
(など)を使用することができます。しかし、拡張子「.dll
」を使用し、ファイル名からコピー&ペーストするだけで簡単です。
私はこれを自分でテストしていないので、これがうまくいくと思います。そうでない場合は、私に知らせてください。
FAKEの 'FxCop'関数はコンソール/ TeamCityログに、実行されている実際のFxCopコマンドラインを出力します。 "FxCop command"という緑色のテキストを探し、次の行に実際のFxCopコマンドが実行されていることを確認してください。そのコマンドラインをあなたの質問に貼り付けることができますか?また、そのコマンドを(FAKEがそれを印刷しているように)手動で実行して、FAKEの下で実行するときと同じように手動で実行するときに同じエラーが発生するかどうかを確認してください。 – rmunn
実際、私は問題はあなたが十分なことを伝えていない、 'RuleLibraries'オプションを指定する必要があることだと思っています。私は少しの研究を行い、あなたのための答えを書くでしょう。 – rmunn