2011-10-18 41 views
10

MS'de olduğu gibi çıktı kodu analiz bilgisine msbuild almaya çalışıyorum. Yapılandırmada (minimum kural kümesiyle) kod analizini çalıştırmak için ayarlanmış VS'de "CodeAnalysis" adlı projem için bir yapılandırmam var. Neyse, bu VS'de iyi çalışıyor, ancak komut satırından msbuild'i çalıştırdığımda, yalnızca temel yapı uyarılarını gösterir ve hiç kod analizi çalıştırmaz. Bunun neden olduğunu bilen varmı? Proje dosyasındaRunCodeAnalysis = true komut isteminde çalışmıyor (MSBuild)

Yapılandırma:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CodeAnalysis|AnyCPU'"> 
<OutputPath>bin\</OutputPath> 
<CodeAnalysisRuleSet>C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\Rule Sets\MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet> 
<RunCodeAnalysis>true</RunCodeAnalysis> 

Komut satırı: Ben de denedim

msbuild Solution.sln /p:Configuration=CodeAnalysis /t:Rebuild 

: Sen yüklü Visual Studio olması gerekir

msbuild Solution.sln /p:RunCodeAnalysis=true /t:Rebuild 
+2

Tanılama düzeyi günlüğe kaydetme (/ fl /flp:v=diag;logfile=diag.log) ile çalıştırın ve RunCodeAnalysis hedefinin neden atlandığını araştırın. CoreBuild'in bağımlılığı olarak çalışan PrepareForRun'un bağımlılığı olarak çalıştırılmalıdır. –

+0

$ (CodeAnalysisPath), $ (CodeAnalysisTargets) özelliklerinin geçerli kod çözümleme aracı yolunu zaten belirleyip belirlemediğini kontrol edin, temel olarak sadece bir komut dosyasının içine yazdırın – sll

+0

@BrianKretzler İpucu için teşekkürler. Özellikle aramam gereken bir şey var mı? Aşağıdakileri buldum: CoreBuildDependsOn = PrepareForRun; PrepareForRunDependsOn = RunCodeAnalysis; Ayrıca, corebuild eyleminde şunları yazıyor: Görev "CallTarget", yanlış durum nedeniyle atlandı; ('$ (UnloadProjectsOnCompletion)' == 'doğru') ('yanlış' == 'doğru') olarak değerlendirildi ..... bu ilişkili olabilir? –

cevap

1

makinesi. Csproj satırında bulunan birçok betik vardır:

VS (uygun sürümden) kurulu olduğu için FxCop hedef dosyasını içerecek ve sizin için Kod Analizi başlatacaktır. Varsayılan olarak

+0

Anladığım kadarıyla FxCop analizi ve Görsel Studio Kod Analizi aynı değildir. – Zitrax

+0

Onlar da aynı şey. Kod Analizi şimdi daha fazla kurallara sahiptir ve 2015 ile birlikte Roslyn Analizörlerini de desteklemektedir. fxCop bunları asla desteklemeyecektir. – jessehouwing

9

MSBuild proje dosyasında yapılandırılan değeri kullanır, ancak

/p:RunCodeAnalysis=true 

daima kod analizi çalışmasına argümanı kullanarak msbuild komut satırında geçersiz kılabilir. Tam tersi, kod analizi devre dışı bırakmak için

/p:RunCodeAnalysis=false 

kullanın.

Ayrıca bkz: ben aynı sorunla karşı karşıya kez

+0

Her Zaman ve Hiçbir Zaman, XAML yapı yapılandırması tarafından sunulan değerler değildir, ancak kapağın altında, MsBuild'e geçtiğinde "true" ve "false" öğesine çevrilir. – jessehouwing

0

, bir (aşırı) ayrıntılı günlüğünü alarak başladı ve Denetleme yapabiliriz bir dosyaya borulu:

Bu dosyada, Kod Analizi hedefinin atlandığını fark ettim, çünkü RunCodeAnalysisOnThisProject true olarak değerlendirildi. Bu nedenle, csproj'da, ilk özellik grubu altında şu satırı benim için yaptım:

.