Try   HackMD

Rider File Template / Code style

這邊是我自己在使用的 File Template & Code Style,給有需要的人參考,相關說明後續會持續補上。

File Template

MS Test

$HEADER$namespace $NAMESPACE$ { [Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute] public class $CLASS$Tests { [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute] public void TestInitialize() { } [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute] [Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute("$User_Name$")] [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("$CLASS$")] [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("$CLASS$", "$TESTNAME$")] public async System.Threading.Tasks.Task $TESTNAME$(){$END$} } }

varable

User_Name = not editable, macro "Short name of the current user"
TESTNAME = editable at "M-01", macro "No macro selected"

Live Template

C#

create test method

rider 原生的 live templates 已經有此功能,但是資訊較少,調用字是 test ,且會依據不同的測試框架長出不同的 attribute

變數 Owner 需要自己選擇巨集 Full user name of the current user

  • for ms test
[Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute] [Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute("$Owner$")] [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("$TestedClassName$")] [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("$TestedClassName$", "$FirstTestName$")] public async System.Threading.Tasks.Task $FirstTestName$() { $END$ }

create test clase

  • for ms test
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute] public class $TestedClassName$Tests { [Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute] public void TestInitialize() { } [Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute] [Microsoft.VisualStudio.TestTools.UnitTesting.OwnerAttribute("$Owner$")] [Microsoft.VisualStudio.TestTools.UnitTesting.TestCategoryAttribute("$TestedClassName$")] [Microsoft.VisualStudio.TestTools.UnitTesting.TestPropertyAttribute("$TestedClassName$", "$FirstTestName$")] public async System.Threading.Tasks.Task $FirstTestName$() { $END$ } }

Code Style

C# File Layout

<?xml version="1.0" encoding="utf-16"?>
<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="MS Test Fixtures" RemoveRegions="All">
    <TypePattern.Match>
      <And>
        <Kind Is="Class" />
        <HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute" Inherited="True" />
      </And>
    </TypePattern.Match>
    <Entry DisplayName="All other members" />
    <Entry DisplayName="Setup/Teardown Methods">
      <Entry.Match>
        <And>
          <Kind Is="Method" />
          <Or>
            <HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute" Inherited="True" />
            <HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute" Inherited="True" />
            <HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.ClassInitializeAttribute" Inherited="True" />
            <HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.ClassCleanupAttribute" Inherited="True" />
          </Or>
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Kind Is="Member" />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="Test Methods" Priority="100">
      <Entry.Match>
        <And>
          <Kind Is="Method" />
          <HasAttribute Name="Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="Private Method">
      <Entry.Match>
        <And>
          <Access Is="Private" />
          <Kind Is="Method" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </Entry>
  </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="All other members" />
    <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="Test Methods" Priority="100">
      <Entry.Match>
        <And>
          <Kind Is="Method" />
          <HasAttribute Name="Xunit.FactAttribute" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="Private Method">
      <Entry.Match>
        <And>
          <Access Is="Private" />
          <Kind Is="Method" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </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="All other members" />
    <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="Test Methods" Priority="100">
      <Entry.Match>
        <And>
          <Kind Is="Method" />
          <HasAttribute Name="NUnit.Framework.TestAttribute" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="Private Method">
      <Entry.Match>
        <And>
          <Access Is="Private" />
          <Kind Is="Method" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </Entry>
  </TypePattern>
  <TypePattern DisplayName="Default Pattern">
    <Entry DisplayName="Public Delegates" Priority="100">
      <Entry.Match>
        <And>
          <Access Is="Public" />
          <Kind Is="Delegate" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="Public Enums" Priority="100">
      <Entry.Match>
        <And>
          <Access Is="Public" />
          <Kind Is="Enum" />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Name />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="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="Fields">
      <Entry.Match>
        <And>
          <Kind Is="Field" />
          <Not>
            <Static />
          </Not>
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <Readonly />
        <Name />
      </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.SortBy>
        <Extern />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="Interface Implementations" Priority="100">
      <Entry.Match>
        <And>
          <Kind Is="Member" />
          <ImplementsInterface />
        </And>
      </Entry.Match>
      <Entry.SortBy>
        <ImplementsInterface Immediate="True" />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="All other members">
      <Entry.SortBy>
        <Access />
        <Name />
      </Entry.SortBy>
    </Entry>
    <Entry DisplayName="Nested Types">
      <Entry.Match>
        <Kind Is="Type" />
      </Entry.Match>
    </Entry>
  </TypePattern>
</Patterns>