2014-09-25 6 views
9

recompiling बिना कोड विश्लेषण चलाने के लिए कैसे मजबूर करें डिफ़ॉल्ट रूप से, कोड विश्लेषण केवल संकलित परियोजनाओं के लिए किया जाता है। इसलिए जब मैं कमांड लाइन से MSBuild चलाता हूं, तो यह केवल पहली बार कोड विश्लेषण चलाता है। बाद की कॉल पर, कोड विश्लेषण छोड़ दिया गया है।एमएसबिल्ड को

पृष्ठभूमि: मैं सीए नियमों का मूल्यांकन करना चाहता हूं और देख सकता हूं कि नियम चालू करते समय हमारे कोड में कितनी चेतावनियां होंगी। इसके लिए मैं सब कुछ पुन: संकलित नहीं करना चाहता - इसमें कुछ समय लगता है - लेकिन कोड विश्लेषण को फिर से चलाएं। आप इसे कैसे प्राप्त कर सकते हैं?

मैं विजुअल स्टूडियो 2013 और एमएसबिल्ड 12.0 का उपयोग कर रहा हूं।

पर स्पष्ट रूप भी कोड विश्लेषण चालू करने में मदद नहीं करता:

msbuild DesktopBuild.proj /p:RunCodeAnalysis=true 

उत्तर

9

ऐसा लगता है कि

  1. del /s *.lastcodeanalysissucceeded
  2. msbuild DesktopBuild.proj /p:RunCodeAnalysis=true

काम करने के लिए लगता है। पहला कदम कोड विश्लेषण को पिछले रनों के बारे में "भूलने" का कारण बनता है और दूसरा चरण प्रत्येक प्रोजेक्ट के लिए चलाने के लिए मजबूर करता है, भले ही किसी प्रोजेक्ट में कोड विश्लेषण सक्षम न हो। यदि बार-बार यह चल रहा है, तो पहले से संकलित परियोजनाओं को फिर से संकलित नहीं किया जाएगा, केवल कोड विश्लेषण फिर से चलाया जाएगा।

+0

अरे, क्या स्रोत नियंत्रण में एक अलग बैच फ़ाइल जोड़ने के बिना XAML बिल्ड परिभाषा में पहला कदम करने का कोई तरीका है? –

2

मैं FxCopCmd.exe का उपयोग कर की कोशिश करेंगे, यह आमतौर पर C:\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Static Analysis Tools\FxCop में पाया जा सकता। इसका उपयोग विजुअल स्टूडियो में कोडएनालिसिस द्वारा किया जाता है, आप इसे उचित पैरामीटर के साथ उपयोग करने में सक्षम होना चाहिए।

+0

इस दृष्टिकोण के साथ समस्या यह है कि हमारे पास दो अलग-अलग नियम सेट हैं और प्रत्येक प्रोजेक्ट परिभाषित करता है कि इनमें से कौन सा नियम सेट करता है। हमारे पास कुछ सौ परियोजनाएं हैं, तो मैं FxCopCmd कैसे चलाऊंगा ताकि प्रत्येक प्रोजेक्ट/डीएलएल अपने कॉन्फ़िगर किए गए नियम सेट का उपयोग कर सके? – Tobias

+1

FxCopCmd का अपना नियम निर्धारित करने का विकल्प है (/ rs) या यहां तक ​​कि विशिष्ट नियमों को चालू और बंद करने के लिए – tdragon

+0

और यह मेरी सहायता कैसे करेगा? जैसा कि मैंने लिखा है, कुछ सौ परियोजनाएं हैं और मैं प्रत्येक असेंबली के लिए मैन्युअल रूप से नियमों की आपूर्ति नहीं कर सकता हूं। यह .csproj फ़ाइल का उपयोग कर स्वचालित रूप से होना चाहिए। और मुझे लगता है कि यह FxCopCmd के साथ संभव नहीं है। – Tobias

2

बस प्रोजेक्ट फ़ाइल में CodeAnalysisGenerateSuccessFile से false पर सेट करें।

<PropertyGroup> 
    <RunCodeAnalysis>true</RunCodeAnalysis> 
    <CodeAnalysisGenerateSuccessFile>false</CodeAnalysisGenerateSuccessFile> 
</PropertyGroup> 
संबंधित मुद्दे