visual studio que programacion plugin mega full code resharper stylecop

studio - ¿Hay una definición de estilo de código ReSharper estándar que coincida con todos los requisitos de StyleCop?



resharper visual studio code (2)

La característica del código de formato ReSharper es muy útil y flexible, particularmente con la nueva flexibilidad de plantillas de diseño de código que JetBrains ha agregado en la versión 3.0.

¿Hay un conjunto estándar de configuraciones de estilo de código para ReSharper que coincidan con las reglas impuestas por Microsoft StyleCop , para que el cumplimiento de StyleCop pueda ser tan fácil como ejecutar la función ReSharper "reformatear código"?



Estoy buscando las mismas cosas.

Aquí hay un diseño de miembro de tipo personalizado:

<?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 /> -->

basado en este, eso no funcionó, pero quién merece el crédito: http://www.clydesdalesoftware.net/blogs/jluif/CommentView,guid,1875594b-0d23-401f-8e22-f1cbf87beefe.aspx

Este es un fragmento de encabezado que cumple con 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>

Todavía no está allí, pero es un comienzo.

Desde esta respuesta, el diseño de miembro de tipo personalizado se ha colocado en StyleCop para el complemento de resharper. Mira aquí