2011-06-18 13 views
10

का उपयोग कर कुछ परियोजनाओं के लिए कोड विश्लेषण अक्षम करें मुझे एक समाधान फ़ाइल मिली है जो कई समाधानों को संकलित करने के लिए MSBuild स्क्रिप्ट का उपयोग करती है। अधिकांश परियोजनाएं विश्लेषण और नियमों के साथ कॉन्फ़िगर की गई हैं और मेरे पास कुछ यूनिट-टेस्ट प्रोजेक्ट हैं जो नहीं करते हैं। विश्लेषण के साथMSBuild

परियोजनाओं चालू:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <DefineConstants>CODE_ANALYSIS;DEBUG;TRACE</DefineConstants> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\Debug</OutputPath> 
    <PlatformTarget>x86</PlatformTarget> 
    <CodeAnalysisRuleSet>..\OurRules.ruleset</CodeAnalysisRuleSet> 
    <RunCodeAnalysis>true</RunCodeAnalysis> 
</PropertyGroup> 

परियोजनाओं के विश्लेषण के साथ बंद कर दिया:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> 
    <DebugSymbols>true</DebugSymbols> 
    <DebugType>full</DebugType> 
    <DefineConstants>DEBUG;TRACE</DefineConstants> 
    <Optimize>false</Optimize> 
    <OutputPath>bin\Debug</OutputPath> 
    <PlatformTarget>x86</PlatformTarget> 
    <RunCodeAnalysis>false</RunCodeAnalysis> 
</PropertyGroup> 

जब मैं अपने निर्माण स्क्रिप्ट चलाने, ऐसा लगता है कुछ परियोजनाओं की तरह परियोजना सेटिंग्स का सम्मान नहीं कर रहे हैं:

msbuild.exe BuildScript.proj /p:SolutionRoot=%cd%; /p:Configuration=Debug /p:Platform:x86 /p:RunCodeAnalysis=True 

जब मैं आउटपुट फ़ोल्डर की जांच करता हूं, तो मुझे कवरेज विश्लेषण xml आउटपुट दिखाई देता है उन परियोजनाओं के लिए जिनमें RunCodeAnalysis ध्वज गलत पर सेट है। क्या कोई मुझे समझने में मदद कर सकता है कि यहां क्या हो रहा है?

उत्तर

18

मैं इसे पोस्ट करने के बाद शीघ्र ही बाहर इस लगा।

टीम बिल्ड RunCodeAnalysis के लिए निम्न मान का समर्थन करता है: हमेशा, डिफ़ॉल्ट, कभी

इसके विपरीत, स्थानीय स्तर पर MSBuild सच या झूठी RunCodeAnalysis के लिए समर्थन करता है।

वे अलग क्यों हैं? Microsoft.TeamFoundation.Build.targets फ़ाइल को देख, निम्नलिखित प्रकट होता है:

<Target Name="CoreCompileSolution"> 
    <PropertyGroup> 
    <CodeAnalysisOption Condition=" '$(RunCodeAnalysis)'=='Always'">RunCodeAnalysis=true</CodeAnalysisOption> 
    <CodeAnalysisOption Condition=" '$(RunCodeAnalysis)'=='Never'">RunCodeAnalysis=false</CodeAnalysisOption> 
    ... 
    </PropertyGroup> 
    ... 
</Target> 

ये सेटिंग्स तो MSBuild प्रक्रिया जब यह समाधान फ़ाइल को संकलित करता है पर पारित कर रहे हैं।

तो दूसरे शब्दों में:

हमेशा MSBuild बताता RunCodeAnalysis साथ सभी परियोजनाओं को संकलित करने के = सच

कभी बताता MSBuild सब पर कोड विश्लेषण (RunCodeAnalysis = false) को दबाने के लिए परियोजनाओं।

... और RunCodeAnalysis के लिए कोई मान निर्दिष्ट नहीं करने का अर्थ है कि एमएसबिल्ड परियोजना फ़ाइल में RunCodeAnalysis सेटिंग का सम्मान करेगा। इसलिए, डिफ़ॉल्ट सेटिंग।

, बस/p को हटाने: अपने मूल प्रश्न से RunCodeAnalysis सही परिणाम था। जिन परियोजनाओं का विश्लेषण हुआ है, वे कोड विश्लेषण चलाएंगे। सेटिंग के बिना परियोजनाएं कोई अतिरिक्त काम नहीं करती हैं।

इस बारे में अधिक जानकारी यहां उपलब्ध है: http://www.bryancook.net/2011/06/build-server-code-analysis-settings.html

8

बदलें:

<RunCodeAnalysis>false</RunCodeAnalysis> 

करने के लिए:

<RunCodeAnalysis>Never</RunCodeAnalysis> 

... और देखते हैं कि अगर आपकी समस्या नहीं सुलझती। RunCodeAnalysis के लिए वैध मान या तो {Default, Always, Never} या {True, False} हैं, जो आप कैसे बनाते हैं इसके आधार पर हैं।

देखें: अधिक जानकारी के लिए How to: Edit a Build Type की आइटम 12 देखें।

इसके अलावा, विसंगतियों के लिए यह लेख RunCodeAnalysis की सेटिंग में, आप कैसे निर्माण के आधार पर देखें: Inconsistent RunCodeAnalysis values

+1

यह स्थानीय है, निर्माण टीम नहीं। जब मैं इसे गलत पर सेट करता हूं, तो सभी परियोजनाओं पर कोई विश्लेषण नहीं किया जाता है। – bryanbcook