Visual Studio 2010'dan Visual Studio 2012'ye özel FxCop (= Kod Analizi) kurallarımızı geçirmeye çalışıyorum.FxCop özel kurallarının VS2012'de bir adı yok (ancak "resmi" kuralların bir adı var)
:Şimdiye kadar, onlar bir şey hariç iyi çalışır: adı Microsoft'un kuralları için gösterilen iken (>Code Analysis
- ->Other windows
View
), sadece CheckId
ve Resolution
, göstermek isimlerini sonuçları penceresinde boştur
stran nedir
benim kurallarıma nesi var: ge, adı ruleset editörü görünür olmasıdır?
Detaylar
İşteiki kural MsBuild en çıkışında göstermek nasıl (balık orada bir şey var, ama farklı bir mesajım var neden anlamıyorum):
İşte6>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
olduğunu
<?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>
Ve burada Microsoft'un kural için XML kural beyanıdır: my kural için XML dosyasında beyanı kural.
<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>
benim durumumda, benim DLL yolunu vermek için '.ruleset' dosyanın' RuleHintPaths' etiketi kullanılır, ancak dediğiniz gibi VS adlı eklentisi bunu görmezden görünüyor. Cevap için teşekkürler, görmek istediğim kişi olmasa bile :). –
Dosyaları \ Takım Araçları \ Statik Analiz Araçları \ FxCop \ Rules \ 'a kopyalayın, ancak çoğunlukla kural eklediğimizden ya da değiştirdiğimizden, bu durumun optimal olmamasından kaynaklanır. Kayıt defteri anahtarı sistemimde yoktu, bu yüzden oluşturmayı denedim, ancak işe yaramıyor. Windows 7 64 bit sistemim var, anahtar başka bir yere yerleştirilebilir mi? Teşekkürler! –
Kayıt defteri anahtarını ekledikten sonra Visual Studio'yu yeniden başlattınız mı? Ayrıca, önceden varolan 'HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 11.0 \ CodeAnalysis' anahtarının altına FxCopRulePath değerini eklemeyi denediniz mi, yoksa sözcükler arasında boşluk olan yeni bir' Code Analysis' anahtarı oluşturdunuz mu? (İkincisi gereklidir.) –