모든 StyleCop 요구 사항과 일치하는 표준 ReSharper 코드 스타일 정의가 있습니까?
문제
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에 추가되었습니다.보다 여기
제휴하지 않습니다 StackOverflow