모든 StyleCop 요구 사항과 일치하는 표준 ReSharper 코드 스타일 정의가 있습니까?

StackOverflow https://stackoverflow.com/questions/57859

  •  09-06-2019
  •  | 
  •  

문제

ReSharper 코드 형식 재지정 기능은 매우 편리하고 유연하며, 특히 JetBrains가 버전 3.0에 추가한 새로운 코드 레이아웃 템플릿 유연성을 통해 더욱 그렇습니다.

다음에 의해 시행되는 규칙과 일치하는 ReSharper용 표준 코드 스타일 설정 세트가 있습니까? 마이크로소프트 스타일캅, 그러면 StyleCop 규정 준수가 ReSharper "코드 형식 변경" 기능을 실행하는 것만큼 쉬워질 ​​수 있습니까?

도움이 되었습니까?

해결책

다음 사이트에서 ReSharper StyleCop 플러그인을 사용해 보세요. http://www.codeplex.com/StyleCopForReSharper

다른 팁

나는 같은 것을 찾고 있습니다.

다음은 사용자 정의 유형 멤버 레이아웃입니다.

<?xml version="1.0" encoding="utf-8"?>
<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"/>
          <HasAttribute CLRName="System.Runtime.InteropServices.InterfaceTypeAttribute"/>
        </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>

  <!--Default pattern-->
  <Pattern>
    <!--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>

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

    <!-- Events-->
    <Entry>
      <Match>
        <Kind Is="event"/>
      </Match>
      <Sort>
        <Name/>
      </Sort>
      <Group Region="Events"/>
    </Entry>

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

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

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

    <!-- public Methods -->
    <Entry>
      <Match>
        <And>
          <Kind Is="method"/>
          <Access Is="public"/>
        </And>
      </Match>
      <Sort>
        <Static/>
        <Name/>
      </Sort>
      <Group>
      </Group>
    </Entry>

    <!-- internal Methods -->
    <Entry>
      <Match>
        <And>
          <Kind Is="method"/>
          <Access Is="internal"/>
        </And>
      </Match>
      <Sort>
        <Static/>
        <Name/>
      </Sort>
      <Group>
      </Group>
    </Entry>

    <!--protected internal Methods -->
    <Entry>
      <Match>
        <And>
          <Kind Is="method"/>
          <Access Is="protected-internal"/>
        </And>
      </Match>
      <Sort>
        <Static/>
        <Name/>
      </Sort>
      <Group>
      </Group>
    </Entry>


    <!-- protected Methods -->
    <Entry>
      <Match>
        <And>
          <Kind Is="method"/>
          <Access Is="protected"/>
        </And>
      </Match>
      <Sort>
        <Static/>
        <Name/>
      </Sort>
      <Group>
      </Group>
    </Entry>

    <!-- private Methods -->
    <Entry>
      <Match>
        <And>
          <Kind Is="method"/>
          <Access Is="private"/>
        </And>
      </Match>
      <Sort>
        <Static/>
        <Name/>
      </Sort>
      <Group>
      </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>
<!--
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 />
-->

이것을 바탕으로, 그것은 나에게 도움이 되지 않았지만 누가 그 공로를 인정받을 자격이 있는지: http://www.clydesdalesoftware.net/blogs/jluif/CommentView,guid,1875594b-0d23-401f-8e22-f1cbf87beefe.aspx

다음은 stylecop을 준수하는 헤더 조각입니다.

// <copyright file="$FileName$" company="$Company$">
// Copyright (c) 2008 All Right Reserved
// </copyright>
// <author>$author$</author>
// <email>$email$</email>
// <date>$date$</date>
// <summary>$summary$</summary>

아직 거기까지는 아니지만 이제 시작입니다.

이 답변 이후로 사용자 정의 유형 멤버 레이아웃이 리샤퍼 플러그인용 StyleCop에 추가되었습니다.보다 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top