2011-10-18 13 views
10

Sto cercando di ottenere msbuild per l'output delle informazioni di analisi del codice come fa in VS. Ho una configurazione per il mio progetto chiamato "CodeAnalysis" in VS che è impostato per eseguire l'analisi del codice su build (con il set di regole minimo). Ad ogni modo questo funziona correttamente in VS, ma quando eseguo msbuild dalla riga di comando mostra solo gli avvisi di build di base e non esegue affatto l'analisi del codice. Qualcuno sa perché questo sta accadendo?RunCodeAnalysis = true non funziona nel prompt dei comandi (MSBuild)

configurazione nel file di progetto:

<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> 

Riga di comando:

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

Ho anche provato:

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

eseguire con registrazione del livello diagnostico (/ fl /flp:v=diag;logfile=diag.log) e cercare il motivo per cui viene saltata la destinazione RunCodeAnalysis. Dovrebbe essere eseguito come dipendenza da PrepareForRun che viene eseguito come dipendenza da CoreBuild. –

+0

Controlla se le proprietà $ (CodeAnalysisPath), $ (CodeAnalysisTargets) sono già impostate e fanno riferimento al percorso di strumenti di analisi del codice valido, in pratica basta stamparle all'interno di uno script – sll

+0

@BrianKretzler Grazie per il suggerimento. C'è qualcosa in particolare che dovrei cercare? Ho trovato il seguente: CoreBuildDependsOn = PrepareForRun; PrepareForRunDependsOn = RunCodeAnalysis; Ho anche notato che all'azione corebuild si dice: Task "CallTarget" saltato, a causa di false condizioni; ('$ (UnloadProjectsOnCompletion)' == 'true') è stato valutato come ('false' == 'true') ..... potrebbe essere correlato? –

risposta

1

È necessario avere installato sul Visual Studio macchina. Esistono molti script inclusi tramite la linea csproj:

Come hai installato VS (di un'edizione appropriata) includerà file di obiettivi FxCop e inizierà l'analisi del codice per te.

+0

A quanto mi risulta l'analisi FxCop e Visual Studio Code Analysis non è la stessa cosa. – Zitrax

+0

Sono la stessa cosa. L'analisi del codice ora ha più regole e con il 2015 supporta anche gli analizzatori di Roslyn. fxCop non supporterà mai quelli. – jessehouwing

9

Per impostazione predefinita, MSBuild utilizza il valore configurato nel file di progetto, ma è possibile escludere che sulla riga di comando msbuild utilizzando l'argomento

/p:RunCodeAnalysis=true 

per eseguire sempre l'analisi del codice. Viceversa, utilizzare

/p:RunCodeAnalysis=false 

di disabilitare analisi del codice.

Consulta anche:

+0

Sempre e Mai sono i valori presentati dalla configurazione di build XAML, ma sotto la cappa vengono tradotti in 'true' e' false' quando vengono passati a MsBuild. – jessehouwing

0

Una volta che ho affrontato lo stesso problema, ho iniziato da ottenere un log (eccessivamente) prolisso e convogliato in un file che ho potuto ispezionare:

msbuild.exe ProjectFile.csproj /v:diag > bld.log 

In tale file, ho notato che la destinazione dell'analisi del codice è stata ignorata perché RunCodeAnalysisOnThisProject è stato valutato come true. Così nel csproj, ho inserito la seguente riga sotto il primo gruppo di proprietà:

<RunCodeAnalysisOnThisProject>true</RunCodeAnalysisOnThisProject> 

che ha fatto per me.

Problemi correlati