2013-05-13 10 views
5

Ho qualche problema nel configurare il "Layout membri tipo" di Resharper 7.1.3.Evita di aggiungere nuovamente il ricercatore per regione per dichiarazione

Ho iniziato a utilizzare il modello per l'utilizzo con le regioni e ho provato a personalizzarlo per le mie esigenze.

PREGO: No discussione su "non utilizzare le regioni, ecc ..."

Il mio primo problema è, che sta attualmente creando una regione per dichiarazione campo in codice, ma ovviamente voglio avere ONE regione con "Campi e costanti statici" e UNA regione con "Campi e costanti".

Il secondo problema è che non crea una singola regione per i miei "Costruttori". Sembra che accetti solo i primi due "Pattern" nella configurazione, ma ignora gli altri.?!

vedere qui il più regioni Problema:

too many regions

My Type Utenti layout è simile al seguente:

<?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> 

sarebbe bello, se qualcuno mi potrebbe dare il suggerimento;)

cheers, Chris

risposta

5

Hai provato a scrivere

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

invece di

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

?

Per quanto riguarda il tuo secondo problema, hai creato due modelli predefiniti. Le regole per "Campi e costanti statici" e "Campi e costanti" arrivarono al primo schema e le regole per i costruttori arrivarono al secondo schema. Sembra che ReSharper accetti il ​​primo pattern di matching e ignori tutti gli altri. È necessario rimuovere queste righe per combinare i tuoi modelli:

</Pattern> 

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

Ciao, grande grazie per la tua risposta veloce. Esso funziona magicamente ;)! Ma, il motivo per cui ho usato più "Pattern" era, che volevo che il Resharper pulisse le Regioni all'interno delle Regioni Campi e Costanti, ma volesse che lasciasse le Regioni nei metodi, proprietà, ecc. Perché a volte uso le regioni per raggruppare metodi speciali. Se volessi usare il "codice di pulizia", ​​il programma di riscrittura avrebbe distrutto le mie regioni personalizzate. :( – ChrisTTian667

+0

@ ChrisTTian667 Sfortunatamente, ora è impossibile rimuovere le regioni in modo selettivo. –

Problemi correlati