Skip to content

Instantly share code, notes, and snippets.

@Jakob-PB
Created May 7, 2020 07:47
Show Gist options
  • Save Jakob-PB/b33e4b6dd3e097caec1c52a84f1676f7 to your computer and use it in GitHub Desktop.
Save Jakob-PB/b33e4b6dd3e097caec1c52a84f1676f7 to your computer and use it in GitHub Desktop.
A reasonable set of C# file layout rules for automatic rearranging of Unity code in Rider.
<Patterns xmlns="urn:schemas-jetbrains-com:member-reordering-patterns">
<TypePattern DisplayName="Non-reorderable types">
<TypePattern.Match>
<Or>
<And>
<Kind Is="Interface" />
<Or>
<HasAttribute Name="System.Runtime.InteropServices.InterfaceTypeAttribute" />
<HasAttribute Name="System.Runtime.InteropServices.ComImport" />
</Or>
</And>
<Kind Is="Struct" />
<HasAttribute Name="JetBrains.Annotations.NoReorderAttribute" />
<HasAttribute Name="JetBrains.Annotations.NoReorder" />
</Or>
</TypePattern.Match>
</TypePattern>
<TypePattern DisplayName="xUnit.net Test Classes" RemoveRegions="All">
<TypePattern.Match>
<And>
<Kind Is="Class" />
<HasMember>
<And>
<Kind Is="Method" />
<HasAttribute Name="Xunit.FactAttribute" Inherited="True" />
</And>
</HasMember>
</And>
</TypePattern.Match>
<Entry DisplayName="Setup/Teardown Methods">
<Entry.Match>
<Or>
<Kind Is="Constructor" />
<And>
<Kind Is="Method" />
<ImplementsInterface Name="System.IDisposable" />
</And>
</Or>
</Entry.Match>
<Entry.SortBy>
<Kind Order="Constructor" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="All other members" />
<Entry Priority="100" DisplayName="Test Methods">
<Entry.Match>
<And>
<Kind Is="Method" />
<HasAttribute Name="Xunit.FactAttribute" />
</And>
</Entry.Match>
</Entry>
</TypePattern>
<TypePattern DisplayName="NUnit Test Fixtures" RemoveRegions="All">
<TypePattern.Match>
<And>
<Kind Is="Class" />
<HasAttribute Name="NUnit.Framework.TestFixtureAttribute" Inherited="True" />
</And>
</TypePattern.Match>
<Entry DisplayName="Setup/Teardown Methods">
<Entry.Match>
<And>
<Kind Is="Method" />
<Or>
<HasAttribute Name="NUnit.Framework.SetUpAttribute" Inherited="True" />
<HasAttribute Name="NUnit.Framework.TearDownAttribute" Inherited="True" />
<HasAttribute Name="NUnit.Framework.FixtureSetUpAttribute" Inherited="True" />
<HasAttribute Name="NUnit.Framework.FixtureTearDownAttribute" Inherited="True" />
</Or>
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="All other members" />
<Entry Priority="100" DisplayName="Test Methods">
<Entry.Match>
<And>
<Kind Is="Method" />
<HasAttribute Name="NUnit.Framework.TestAttribute" />
</And>
</Entry.Match>
</Entry>
</TypePattern>
<TypePattern DisplayName="Default Pattern">
<Entry DisplayName="Nested Types">
<Entry.Match>
<Kind Is="Type" />
</Entry.Match>
</Entry>
<Entry Priority="100" DisplayName="Public Delegates">
<Entry.Match>
<And>
<Access Is="Public" />
<Kind Is="Delegate" />
</And>
</Entry.Match>
</Entry>
<Entry Priority="100" DisplayName="Public Enums">
<Entry.Match>
<And>
<Access Is="Public" />
<Kind Is="Enum" />
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="Static Fields and Constants">
<Entry.Match>
<Or>
<And>
<Kind Is="Constant" />
<Access Is="Public" />
</And>
<And>
<Kind Is="Field" />
<Access Is="Public" />
<Static />
</And>
</Or>
</Entry.Match>
<Entry.SortBy>
<Kind Order="Constant Field" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Public Fields">
<Entry.Match>
<And>
<Access Is="Public" />
<Kind Is="Field" />
</And>
</Entry.Match>
<Entry.SortBy>
<Readonly />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Serialized Fields">
<Entry.Match>
<And>
<Kind Is="Field" />
<HasAttribute Name="SerializeField" />
</And>
</Entry.Match>
<Entry.SortBy>
<Readonly />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Private Static Fields and Constants">
<Entry.Match>
<Or>
<Kind Is="Constant" />
<And>
<Kind Is="Field" />
<Static />
</And>
</Or>
</Entry.Match>
<Entry.SortBy>
<Kind Order="Constant Field" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Private Fields">
<Entry.Match>
<And>
<Kind Is="Field" />
<Not>
<Static />
</Not>
</And>
</Entry.Match>
<Entry.SortBy>
<Readonly />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Constructors">
<Entry.Match>
<Kind Is="Constructor" />
</Entry.Match>
<Entry.SortBy>
<Static />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Properties, Indexers">
<Entry.Match>
<Or>
<Kind Is="Property" />
<Kind Is="Indexer" />
</Or>
</Entry.Match>
</Entry>
<Entry Priority="100" DisplayName="Interface Implementations">
<Entry.Match>
<And>
<Kind Is="Member" />
<ImplementsInterface />
</And>
</Entry.Match>
<Entry.SortBy>
<ImplementsInterface Immediate="True" />
</Entry.SortBy>
</Entry>
<Entry DisplayName="Public Methods">
<Entry.Match>
<And>
<Kind Is="Method" />
<Access Is="Public" />
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="Core Unity MonoBehaviour Messages">
<Entry.Match>
<And>
<Kind Is="Method" />
<Or>
<Name Is="Awake" />
<Name Is="Start" />
</Or>
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="OnEnable MonoBehaviour Message">
<Entry.Match>
<And>
<Kind Is="Method" />
<Name Is="OnEnable" />
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="OnDisable MonoBehaviour Message">
<Entry.Match>
<And>
<Kind Is="Method" />
<Name Is="OnDisable" />
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="OnDestroy MonoBehaviour Message">
<Entry.Match>
<And>
<Kind Is="Method" />
<Name Is="OnDestroy" />
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="Update MonoBehaviour Message">
<Entry.Match>
<And>
<Kind Is="Method" />
<Name Is="Update" />
</And>
</Entry.Match>
</Entry>
<Entry DisplayName="Unity MonoBehaviour Special Update Messages">
<Entry.Match>
<And>
<Kind Is="Method" />
<Or>
<Name Is="FixedUpdate" />
<Name Is="LateUpdate" />
</Or>
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="All Other Unity MonoBehaviour Messages">
<Entry.Match>
<And>
<Kind Is="Method" />
<Or>
<Name Is="OnAnimatorIK" />
<Name Is="OnAnimatorMove" />
<Name Is="OnApplicationFocus" />
<Name Is="OnApplicationPause" />
<Name Is="OnApplicationQuit" />
<Name Is="OnAudioFilterRead" />
<Name Is="OnBecameInvisible" />
<Name Is="OnBecameVisible" />
<Name Is="OnCollisionEnter" />
<Name Is="OnCollisionEnter2D" />
<Name Is="OnCollisionExit" />
<Name Is="OnCollisionExit2D" />
<Name Is="OnCollisionStay" />
<Name Is="OnCollisionStay2D" />
<Name Is="OnConnectedToServer" />
<Name Is="OnControllerColliderHit" />
<Name Is="OnDisconnectedFromServer" />
<Name Is="OnDrawGizmos" />
<Name Is="OnDrawGizmosSelected" />
<Name Is="OnFailedToConnect" />
<Name Is="OnFailedToConnectToMasterServer" />
<Name Is="OnGUI" />
<Name Is="OnJointBreak" />
<Name Is="OnJointBreak2D" />
<Name Is="OnMasterServerEvent" />
<Name Is="OnMouseDown" />
<Name Is="OnMouseDrag" />
<Name Is="OnMouseEnter" />
<Name Is="OnMouseExit" />
<Name Is="OnMouseOver" />
<Name Is="OnMouseUp" />
<Name Is="OnMouseUpAsButton" />
<Name Is="OnNetworkInstantiate" />
<Name Is="OnParticleCollision" />
<Name Is="OnParticleSystemStopped" />
<Name Is="OnParticleTrigger" />
<Name Is="OnParticleUpdateJobScheduled" />
<Name Is="OnPlayerConnected" />
<Name Is="OnPlayerDisconnected" />
<Name Is="OnPostRender" />
<Name Is="OnPreCull" />
<Name Is="OnPreRender" />
<Name Is="OnRenderImage" />
<Name Is="OnRenderObject" />
<Name Is="OnSerializeNetworkView" />
<Name Is="OnServerInitialized" />
<Name Is="OnTransformChildrenChanged" />
<Name Is="OnTransformParentChanged" />
<Name Is="OnTriggerEnter" />
<Name Is="OnTriggerEnter2D" />
<Name Is="OnTriggerExit" />
<Name Is="OnTriggerExit2D" />
<Name Is="OnTriggerStay" />
<Name Is="OnTriggerStay2D" />
<Name Is="OnValidate" />
<Name Is="OnWillRenderObject" />
<Name Is="Reset" />
</Or>
</And>
</Entry.Match>
<Entry.SortBy>
<Name />
</Entry.SortBy>
</Entry>
<Entry DisplayName="All Other Members" />
</TypePattern>
</Patterns>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment