2013-05-13 8 views
5

Mam problem z konfiguracją "Układu członków typu" w wersji Resharper 7.1.3.Unikaj Resharpera, aby dodać region dla każdej deklaracji

Zacząłem używać szablonu do używania z regionami i próbowałem dostosować go do moich potrzeb.

PROSZĘ: Brak dyskusji na temat „nie używając regionów itd ...”

Mój pierwszy problem jest to, że jest on obecnie tworząc jeden region za deklaracji pola w kodzie, ale oczywiście chcę mieć jeden region z "Stałymi polami i stałymi" i JEDNYM regionem z "Polami i stałymi".

Drugi problem polega na tym, że nie tworzy on jednego regionu dla moich "Konstruktorów". Wygląda na to, że po prostu akceptuje pierwsze dwa "wzorce" w konfiguracji, ale ignoruje pozostałe.?!

Zobacz tu wiele regionów Problem:

too many regions

mój typ Członkowie Układ wygląda następująco:

<?xml version="1.0" encoding="utf-8" ?> 

<!-- 
I. Overall 

I.1 Each pattern can have <Match>....</Match> element. For the given type declaration, the pattern with the match, evaluated to 'true' with the largest weight, will be used 
I.2 Each pattern consists of the sequence of <Entry>...</Entry> elements. Type member declarations are distributed between entries 
I.3 If pattern has RemoveAllRegions="true" attribute, then all regions will be cleared prior to reordering. Otherwise, only auto-generated regions will be cleared 
I.4 The contents of each entry is sorted by given keys (First key is primary, next key is secondary, etc). Then the declarations are grouped and en-regioned by given property 

II. Available match operands 

Each operand may have Weight="..." attribute. This weight will be added to the match weight if the operand is evaluated to 'true'. 
The default weight is 1 

II.1 Boolean functions: 
II.1.1 <And>....</And> 
II.1.2 <Or>....</Or> 
II.1.3 <Not>....</Not> 

II.2 Operands 
II.2.1 <Kind Is="..."/>. Kinds are: class, struct, interface, enum, delegate, type, constructor, destructor, property, indexer, method, operator, field, constant, event, member 
II.2.2 <Name Is="..." [IgnoreCase="true/false"] />. The 'Is' attribute contains regular expression 
II.2.3 <HasAttribute CLRName="..." [Inherit="true/false"] />. The 'CLRName' attribute contains regular expression 
II.2.4 <Access Is="..."/>. The 'Is' values are: public, protected, internal, protected internal, private 
II.2.5 <Static/> 
II.2.6 <Abstract/> 
II.2.7 <Virtual/> 
II.2.8 <Override/> 
II.2.9 <Sealed/> 
II.2.10 <Readonly/> 
II.2.11 <ImplementsInterface CLRName="..."/>. The 'CLRName' attribute contains regular expression 
II.2.12 <HandlesEvent /> 
--> 

<Patterns xmlns="urn:shemas-jetbrains-com:member-reordering-patterns"> 

    <!--Do not reorder COM interfaces and structs marked by StructLayout attribute--> 
    <Pattern> 
     <Match> 
      <Or Weight="100"> 
       <And> 
        <Kind Is="interface"/> 
        <Or> 
         <HasAttribute CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"/> 
         <HasAttribute CLRName="System.Runtime.InteropServices.ComImport"/> 
        </Or> 
       </And> 
       <HasAttribute CLRName="System.Runtime.InteropServices.StructLayoutAttribute"/> 
      </Or> 
     </Match> 
    </Pattern> 

    <!--Special formatting of NUnit test fixture--> 
    <Pattern RemoveAllRegions="true"> 
     <Match> 
      <And Weight="100"> 
       <Kind Is="class"/> 
       <HasAttribute CLRName="NUnit.Framework.TestFixtureAttribute" Inherit="true"/> 
      </And> 
     </Match> 

     <!--Setup/Teardow--> 
     <Entry> 
      <Match> 
       <And> 
        <Kind Is="method"/> 
        <Or> 
         <HasAttribute CLRName="NUnit.Framework.SetUpAttribute" Inherit="true"/> 
         <HasAttribute CLRName="NUnit.Framework.TearDownAttribute" Inherit="true"/> 
         <HasAttribute CLRName="NUnit.Framework.FixtureSetUpAttribute" Inherit="true"/> 
         <HasAttribute CLRName="NUnit.Framework.FixtureTearDownAttribute" Inherit="true"/> 
        </Or> 
       </And> 
      </Match> 
      <Group Region="Setup/Teardown"/> 
     </Entry> 

     <!--All other members--> 
     <Entry/> 

     <!--Test methods--> 
     <Entry> 
      <Match> 
       <And Weight="100"> 
        <Kind Is="method"/> 
        <HasAttribute CLRName="NUnit.Framework.TestAttribute" Inherit="false"/> 
       </And> 
      </Match> 
      <Sort> 
       <Name/> 
      </Sort> 
     </Entry> 
    </Pattern> 

    <Pattern RemoveAllRegions="true"> 
     <!-- static fields and constants --> 
     <Entry> 
      <Match> 
        <Or> 
         <And> 
          <Kind Is="constant"/> 
          <Static/> 
         </And>    
         <And> 
          <Kind Is="field"/> 
          <Static/> 
         </And>        
        </Or> 

      </Match> 
      <Sort> 
       <Readonly/> 
       <Name/> 
      </Sort> 
      <Group> 
       <Name Region="Static Fields and Constants"/> 
      </Group> 
     </Entry> 

     <!--fields and constants--> 
     <Entry> 
      <Match> 
        <Or> 
         <And> 
          <Kind Is="constant"/> 
          <Not> 
           <Static/> 
          </Not> 
         </And>    
         <And> 
          <Kind Is="field"/> 
          <Not> 
           <Static/> 
          </Not> 
         </And>     
        </Or> 
      </Match> 
      <Sort> 
       <Readonly/> 
       <Name/> 
      </Sort> 
      <Group> 
       <Name Region="Fields and Constants"/> 
      </Group> 
     </Entry> 
    </Pattern> 

    <!--Default pattern--> 
    <Pattern RemoveAllRegions="false"> 

     <!--public delegate--> 
     <Entry> 
      <Match> 
       <And Weight="100"> 
        <Access Is="public"/> 
        <Kind Is="delegate"/> 
       </And> 
      </Match> 
      <Sort> 
       <Name/> 
      </Sort> 
      <Group Region="Delegates"/> 
     </Entry> 

     <!--public enum--> 
     <Entry> 
      <Match> 
       <And Weight="100"> 
        <Access Is="public"/> 
        <Kind Is="enum"/> 
       </And> 
      </Match> 
      <Sort> 
       <Name/> 
      </Sort> 
      <Group> 
       <Name Region="${Name} enum"/> 
      </Group> 
     </Entry> 

     <!-- Constructors. Place static one first --> 
     <Entry> 
      <Match> 
       <Kind Is="constructor"/> 
      </Match> 
      <Sort> 
       <Static/> 
      </Sort> 
      <Group> 
       <Name Region="Constructor/Destructor"/> 
      </Group> 
     </Entry> 

     <!--properties, indexers--> 
     <Entry> 
      <Match> 
       <Or> 
        <Kind Is="property"/> 
        <Kind Is="indexer"/> 
       </Or> 
      </Match> 
      <Group Region="Properties"/> 
     </Entry> 

     <!--interface implementations--> 
     <Entry> 
      <Match> 
       <And Weight="100"> 
        <Kind Is="member"/> 
        <ImplementsInterface/> 
       </And> 
      </Match> 
      <Sort> 
       <ImplementsInterface Immediate="true"/> 
      </Sort> 
      <Group> 
       <ImplementsInterface Immediate="true" Region="${ImplementsInterface} Members"/> 
      </Group> 
     </Entry> 

     <!--all other members--> 
     <Entry/> 

     <!--nested types--> 
     <Entry> 
      <Match> 
       <Kind Is="type"/> 
      </Match> 
      <Sort> 
       <Name/> 
      </Sort> 
      <Group> 
       <Name Region="Nested type: ${Name}"/> 
      </Group> 
     </Entry> 
    </Pattern> 
</Patterns> 

byłoby fajnie, gdyby ktoś mógł mi dać wskazówkę;)

okrzyki, Chris

Odpowiedz

5

Czy próbowałeś pisać

<Group Region="Static Fields and Constants"/> 

zamiast

<Group> 
    <Name Region="Static Fields and Constants"/> 
</Group> 

?

Co do drugiego problemu - utworzyłeś dwa domyślne wzory. Reguły dla "Statycznych pól i stałych" oraz "Pola i stałe" pojawiły się na pierwszym schemacie, a reguły dotyczące elementów konstrukcyjnych stały się drugim wzorem. Wygląda na to, że ReSharper akceptuje pierwszy zgodny wzór i ignoruje wszystkie pozostałe. Musisz usunąć te linie, aby połączyć swoje wzorce:

</Pattern> 

<!--Default pattern--> 
<Pattern RemoveAllRegions="false"> 
+0

Witam, dziękuję za szybką odpowiedź. To działa jak urok ;)! Ale powodem, dla którego użyłem wielu "wzorców" było to, że chciałem, aby Resharper oczyścił Regiony w obrębie Obszarów i Ciągłych Regionów, ale chciałby, aby opuścił Regiony tylko w metodach, właściwościach itp. Ponieważ czasami używam regionów do grupowania specjalnych metod. Gdybym użył "kodu czyszczenia", Resharper zniszczyłby moje regiony niestandardowe. :( – ChrisTTian667

+0

@ ChrisTTian667 Niestety, nie jest obecnie możliwe selektywne usuwanie regionów. –

Powiązane problemy