ReSharper重新格式化代碼功能非常方便和靈活,特別是JetBrains在3.0版中添加了新的代碼佈局模板靈活性。是否有符合所有StyleCop要求的標準ReSharper代碼風格定義?
ReSharper是否有一組標準的代碼樣式設置符合Microsoft StyleCop強制執行的規則,以便StyleCop符合性可以像運行ReSharper「重新格式化代碼」功能一樣簡單?
ReSharper重新格式化代碼功能非常方便和靈活,特別是JetBrains在3.0版中添加了新的代碼佈局模板靈活性。是否有符合所有StyleCop要求的標準ReSharper代碼風格定義?
ReSharper是否有一組標準的代碼樣式設置符合Microsoft StyleCop強制執行的規則,以便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 for resharper插件。見here
這個插件看起來很方便,但你誤解了我的問題。我正在尋找一些預置的ReSharper代碼樣式格式設置,它們與StyleCop所要求的格式設置相匹配(例如公共/私人成員的排序,圓括號內的空格等) – 2008-09-29 10:19:40