2011-10-18 10 views
10

मैं आउटपुट कोड विश्लेषण जानकारी के लिए msbuild प्राप्त करने की कोशिश कर रहा हूं जैसे यह वीएस में करता है। मेरे पास VS में "CodeAnalysis" नामक मेरी प्रोजेक्ट के लिए कॉन्फ़िगरेशन है जो निर्माण (कोड के न्यूनतम नियम के साथ) पर कोड विश्लेषण चलाने के लिए सेट किया गया है। वैसे भी यह वीएस में ठीक काम कर रहा है, लेकिन जब मैं कमांड लाइन से msbuild चलाता हूं तो यह केवल मूल निर्माण चेतावनियां दिखाता है और यह बिल्कुल कोड विश्लेषण नहीं चलाता है। क्या कोई जानता है कि यह क्यों हो रहा है?RunCodeAnalysis = सच कमांड प्रॉम्प्ट में काम नहीं कर रहा है (MSBuild)

प्रोजेक्ट फाइल में विन्यास:

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

आदेश लाइन:

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

मैं भी करने की कोशिश की:

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

नैदानिक ​​स्तर लॉगिंग (/ fl /flp:v=diag ;logfile=diag.log) के साथ चलाएं और खोजें कि RunCodeAnalysis लक्ष्य क्यों छोड़ा जा रहा है। इसे PrepareForRun की निर्भरता के रूप में चलाया जाना चाहिए जो CoreBuild की निर्भरता के रूप में चलाया जाता है। –

+0

जांच करें कि गुण $ (CodeAnalysisPath), $ (CodeAnalysisTargets) पहले से ही मान्य कोड विश्लेषण टूलींग पथ को सेट और संदर्भित कर रहा है, मूल रूप से बस उन्हें स्क्रिप्ट – sll

+0

@BrianKretzler के अंदर धन्यवाद प्रिंट के लिए धन्यवाद। क्या विशेष रूप से कुछ मुझे ढूंढना चाहिए? मैंने निम्नलिखित पाया: CoreBuildDependsOn = PrepareForRun; PrepareForRunDependsOn = RunCodeAnalysis; मैंने यह भी देखा कि कोरबिल्ड एक्शन में यह कहता है: झूठी स्थिति के कारण कार्य "कॉलटाइटल" छोड़ दिया गया; ('$ (UnloadProjectsOnCompletion)' == 'true') का मूल्यांकन किया गया था ('false' == 'true') ..... क्या यह संबंधित हो सकता है? –

उत्तर

1

आप पर स्थापित दृश्य स्टूडियो की आवश्यकता है मशीन। सीस्पोज़ लाइन के माध्यम से कई स्क्रिप्ट शामिल हैं:

जैसा कि आपके पास वीएस (उचित संस्करण) स्थापित है, इसमें FxCop लक्ष्य फ़ाइल शामिल होगी और आपके लिए कोड विश्लेषण शुरू कर देगा।

+0

मैं यह समझ के रूप में FxCop विश्लेषण और दृश्य स्टूडियो कोड विश्लेषण समान नहीं हैं। – Zitrax

+0

वे एक ही बात हैं। कोड विश्लेषण में अभी और अधिक नियम हैं और 2015 के साथ यह रोज़लिन विश्लेषकों का भी समर्थन करता है। fxCop उनको कभी समर्थन नहीं करेगा। – jessehouwing

9

डिफ़ॉल्ट रूप से, MSBuild परियोजना फ़ाइल में विन्यस्त मान का उपयोग करता है, लेकिन आप तर्क

/p:RunCodeAnalysis=true 

हमेशा कोड विश्लेषण चलाने के लिए का उपयोग कर msbuild कमांड लाइन पर यह ओवरराइड कर सकते हैं। इसके विपरीत,

/p:RunCodeAnalysis=false 

कोड विश्लेषण अक्षम करने के लिए उपयोग करें।

यह भी देखें:

+0

एक्सएएमएल बिल्ड कॉन्फ़िगरेशन द्वारा प्रस्तुत मूल्यों को हमेशा और कभी नहीं, लेकिन हुड के तहत एमएसबिल्ड को पास किए जाने पर उन्हें 'सत्य' और 'झूठी' में अनुवादित किया जाता है। – jessehouwing

0

एक बार मैं एक ही समस्या का सामना करना पड़ा, मैं एक (अत्यधिक) वर्बोज़ लॉग हो रही द्वारा शुरू कर दिया और एक फ़ाइल है कि मैं का निरीक्षण कर सकता करने के लिए इसे पहुंचाया:

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

उस फ़ाइल में, मैंने देखा कि कोड विश्लेषण लक्ष्य छोड़ दिया गया था क्योंकि RunCodeAnalysisOnThisProject का मूल्यांकन सही था। तो csproj में, मैंने पहली संपत्ति समूह के तहत निम्न पंक्ति शामिल की:

<RunCodeAnalysisOnThisProject>true</RunCodeAnalysisOnThisProject> 

जो मेरे लिए यह किया।

संबंधित मुद्दे