मैं विजुअल स्टूडियो 2010 से विजुअल स्टूडियो 2012 से हमारे कस्टम FxCop (= कोड विश्लेषण) नियमों को माइग्रेट करने का प्रयास कर रहा हूं।FxCop कस्टम नियमों का नाम VS2012 में नहीं है (लेकिन "आधिकारिक" नियमों का नाम है)
अब तक, वे एक बात के लिए छोड़कर अच्छा काम: उनके नाम परिणाम विंडो में खाली है (->Other windows
- View
>Code Analysis
), केवल CheckId
और Resolution
, दिखाई, जबकि नाम माइक्रोसॉफ्ट के नियमों के लिए दिखाया गया है:
स्ट्रैन क्या है
मेरे नियमों के साथ गलत है: जीई, उस नाम नियम-सेट संपादक में दिख रहा है है?
विवरण
यहाँ कैसे दोनों नियमों MSBuild के उत्पादन में दिखाई है (वहाँ कुछ गड़बड़ वहाँ है, लेकिन मुझे समझ नहीं आता क्यों मैं एक अलग संदेश है):
6>c:\Users\Me\MySolution\MyProject\Program.cs(15): warning : CA1804 : Microsoft.Performance : 'Foo<T>.SomeMethod()' declares a variable, 'z', of type 'int', which is never used or is only assigned to. Use this variable or remove it.
6>MSBUILD : warning : CF1001 : CustomRules.ThreadSafety : The public Public Field "Tests.Program.Foo" must be preceded of readonly
यहाँ है मेरा नियम के लिए शासन एक्सएमएल फ़ाइल में घोषणा:
<?xml version="1.0" encoding="utf-8" ?>
<Rules FriendlyName="CustomRules">
<Rule TypeName="PublicFieldsMustBeReadonly" Category="CustomRules.ThreadSafety" CheckId="CF1001">
<Name>Public Fields must be readonly or must be replaced with a Getter/Setter Method.</Name>
<Description>Public Fields must be readonly or must be replaced with a Getter/Setter Method.</Description>
<GroupOwner>MyCompany</GroupOwner>
<DevOwner>Me</DevOwner>
<Owner>Me</Owner>
<Url>http://example.com</Url>
<Resolution>The public Public Field "{0}" must be preceded of readonly</Resolution>
<Email>[email protected]</Email>
<MessageLevel Certainty="100">Warning</MessageLevel>
<FixCategories>Breaking</FixCategories>
</Rule>
</Rules>
और यहाँ माइक्रोसॉफ्ट के शासन के लिए एक्सएमएल में शासन घोषणा है।
<Rules FriendlyName="Performance Rules">
<Rule TypeName="RemoveUnusedLocals" Category="Microsoft.Performance" CheckId="CA1804">
<Name>
Remove unused locals
</Name>
<Description>
Remove locals that are not used or are only assigned to in method implementations.
</Description>
<Url>
@ms182278(VS.100).aspx
</Url>
<Resolution>
{0} declares a variable, {1}, of type {2}, which is never used or is only assigned to. Use this variable or remove it.
</Resolution>
<Email />
<MessageLevel Certainty="95">
Warning
</MessageLevel>
<FixCategories>
NonBreaking
</FixCategories>
<Owner />
</Rule>
</Rules>
मेरे मामले में, मैं '.ruleset' फ़ाइल के' RuleHintPaths' टैग का उपयोग किया मेरी DLL करने के लिए पथ देने के लिए, लेकिन जैसा कि आप कहते हैं कि वी.एस. के प्लगइन इसे अनदेखा करने लगता है। उत्तर के लिए धन्यवाद, भले ही यह वह नहीं है जिसे मैं देखना चाहता हूं :)। –
फ़ाइलों को < \ टीम टूल्स \ स्टेटिक विश्लेषण उपकरण \ FxCop \ Rules' पर कॉपी करना, लेकिन यह उप-शीर्ष है क्योंकि हम अक्सर नियम जोड़ते हैं या tweak करते हैं। रजिस्ट्री कुंजी मेरे सिस्टम पर अनुपस्थित थी, इसलिए मैंने इसे बनाने की कोशिश की, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। मेरे पास विंडोज 7 64-बिट सिस्टम है, क्या कुंजी कहीं और स्थित हो सकती है? धन्यवाद! –
क्या आपने रजिस्ट्री कुंजी जोड़ने के बाद विजुअल स्टूडियो को पुनरारंभ किया था? साथ ही, क्या आपने पूर्व-मौजूदा 'HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ CodeAnalysis' कुंजी के तहत FxCopRulePath मान जोड़ने का प्रयास किया है, या आपने शब्दों के बीच एक स्थान के साथ एक नया' कोड विश्लेषण 'कुंजी बनाई है? (उत्तरार्द्ध आवश्यक है।) –