Wiki
Clone wikiGreenkeeper / SortingDefinition
Configure sorting
Sorting can be configured in the optionsdialog. Navigate in Visual Studio to the ReSharper-Options, menuitem Greenkeeper Sorting (ReSharper > Options > Greenkeeper > Sorting).
The sorting could be defined as xml. Here is a simple example:
#!xml <?xml version="1.0" encoding="utf-8"?> <DeclarationSortingDefinition> <DeclarationSorter type="DeclarationSorter"> <DeclarationComparer type="AlphanumericDeclarationComparer"/> </DeclarationSorter> <AdditionalExecutor type="CodeFormatExecutor"/> </DeclarationSortingDefinition>
##Xml-Elements in config
DeclarationSorterTypes
-
DeclarationSorter
-
ConditionalDeclarationSorter (XmlElements: ClassDeclarationCondition, DeclarationSorter)
-
MultiConditionalDeclarationSorter (XmlElements: ConditionalDeclarationSorter)
ClassDeclarationConditionTypes
-
AttributeClassDeclarationCondition (XmlAttributes: Attributes)
-
NoClassDeclarationCondition
DeclarationComparerTypes
-
AccessRightsDeclarationComparer (XmlAttributes: AccessRightsOrder -> e.g. "PRIVATE,INTERNAL" -> "PUBLIC", "INTERNAL", "PROTECTED", "PROTECTED_OR_INTERNAL", "PROTECTED_AND_INTERNAL", "PRIVATE", "NONE")
-
AlphanumericDeclarationComparer
-
AttributeDeclarationComparer (XmlAttributes: AttributeOrder -> e.g "Test,TestCase")
-
ConditionalDeclarationComparer (XmlElements: DeclarationCondition, DeclarationComparer)
-
DeclarationBaseElementComparer (XmlAttributes: ExcludedTypes -> e.g. "System.Object,System.IDisposable")
-
ModifiersDeclarationComparer (XmlAttributes: ModifierNameOrder -> e.g. "Static,Readonly" -> "None","Abstract","Sealed", "Virtual", "Override", "Static", "Readonly", "Extern" , "Unsafe", "Volatile")
-
MultiDeclarationComparer (XmlElements: DeclarationComparer)
-
ParameterCountDeclarationComparer
-
RegionDeclarationComparer
-
SortedIndexDeclarationComparer
-
TypeDeclarationComparer (XmlAttributes: TypeOrder -> e.g. "Constant, Method" -> "Method", "Constant", "Property", "Field", "Constructor", "Destructor", "Event", "Indexer", "Delegate", "Operator")
-
UsageOrderDeclarationComparer (XmlElements: DeclarationComparer)
-
UsageOrderRootDeclarationComparer
DeclarationConditionTypes
-
TypeDeclarationCondition (XmlAttributes: Types -> e.g. "Constant, Method" -> "Method", "Constant", "Property", "Field", "Constructor", "Destructor", "Event", "Indexer", "Delegate", "Operator")
-
AccessRightsDeclarationCondition (XmlAttributes: AccessRights -> e.g. "PRIVATE,INTERNAL" -> "PUBLIC", "INTERNAL", "PROTECTED", "PROTECTED_OR_INTERNAL", "PROTECTED_AND_INTERNAL", "PRIVATE", "NONE")
AdditionalExecutorTypes
-
BrokenRegionRemoverExecutor
-
CodeFormatExecutor (XmlAttributes: Profile -> "DEFAULT", "INDENT", "GENERATOR", "SOFT")
-
MultiAdditionalExecutor (XmlElements: AdditionalExecutor)
-
RegionKeeperExecutor
Default sorting behaviour
Here is a more complex example and already the default sorting behaviour:
#!xml <?xml version="1.0" encoding="utf-8"?> <DeclarationSortingDefinition> <DeclarationSorter type="MultiConditionalDeclarationSorter"> <ConditionalDeclarationSorter> <ClassDeclarationCondition type="AttributeClassDeclarationCondition" Attributes="TestFixture"/> <DeclarationSorter type="DeclarationSorter"> <DeclarationComparer type="MultiDeclarationComparer"> <DeclarationComparer type="TypeDeclarationComparer" TypeOrder="Constant,Field,Property,Constructor,Method"/> <DeclarationComparer type="ConditionalDeclarationComparer"> <DeclarationCondition type="TypeDeclarationCondition" Types="Method" /> <DeclarationComparer type="UsageOrderDeclarationComparer"> <DeclarationComparer type="MultiDeclarationComparer"> <DeclarationComparer type="SortedIndexDeclarationComparer"/> <DeclarationComparer type="AttributeDeclarationComparer" AttributeOrder="TestFixtureSetUp,TestFixtureTearDown,SetUp,TearDown,Test|TestCase|TestCaseSource" /> </DeclarationComparer> </DeclarationComparer> </DeclarationComparer> <DeclarationComparer type="ModifiersDeclarationComparer" ModifierNameOrder="Static,Readonly"/> <DeclarationComparer type="AccessRightsDeclarationComparer" AccessRightsOrder="PUBLIC,INTERNAL,PROTECTED,PRIVATE"/> <DeclarationComparer type="ConditionalDeclarationComparer"> <DeclarationCondition type="TypeDeclarationCondition" Types="Constructor" /> <DeclarationComparer type="ParameterCountDeclarationComparer"/> </DeclarationComparer> <DeclarationComparer type="SortedIndexDeclarationComparer"/> </DeclarationComparer> </DeclarationSorter> </ConditionalDeclarationSorter> <ConditionalDeclarationSorter> <ClassDeclarationCondition type="NoClassDeclarationCondition" /> <DeclarationSorter type="DeclarationSorter"> <DeclarationComparer type="MultiDeclarationComparer"> <DeclarationComparer type="TypeDeclarationComparer" TypeOrder="Constant,Field,Property,Constructor,Method"/> <DeclarationComparer type="ConditionalDeclarationComparer"> <DeclarationCondition type="TypeDeclarationCondition" Types="Method" /> <DeclarationComparer type="UsageOrderDeclarationComparer"> <DeclarationComparer type="MultiDeclarationComparer"> <DeclarationComparer type="SortedIndexDeclarationComparer"/> <DeclarationComparer type="UsageOrderRootDeclarationComparer"/> <DeclarationComparer type="ModifiersDeclarationComparer" ModifierNameOrder="Static,Readonly"/> <DeclarationComparer type="AccessRightsDeclarationComparer" AccessRightsOrder="PUBLIC,INTERNAL,PROTECTED,PRIVATE"/> <DeclarationComparer type="ParameterCountDeclarationComparer"/> </DeclarationComparer> </DeclarationComparer> </DeclarationComparer> <DeclarationComparer type="ModifiersDeclarationComparer" ModifierNameOrder="Static,Readonly"/> <DeclarationComparer type="AccessRightsDeclarationComparer" AccessRightsOrder="PUBLIC,INTERNAL,PROTECTED,PRIVATE"/> <DeclarationComparer type="ConditionalDeclarationComparer"> <DeclarationCondition type="TypeDeclarationCondition" Types="Constructor" /> <DeclarationComparer type="ParameterCountDeclarationComparer"/> </DeclarationComparer> <DeclarationComparer type="SortedIndexDeclarationComparer"/> </DeclarationComparer> </DeclarationSorter> </ConditionalDeclarationSorter> </DeclarationSorter> </DeclarationSortingDefinition>
Updated