Gibt es einen Standard ReSharper Code Stildefinition, die alle StyleCop Anforderungen entspricht?

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

  •  09-06-2019
  •  | 
  •  

Frage

Die ReSharper umformatieren Code-Funktion ist sehr praktisch und flexibel, vor allem mit der neuen Code-Layout Templating Flexibilität JetBrains hat in Version 3.0 hinzugefügt.

Gibt es einen Standardsatz von Codestileinstellungen für ReSharper, die die Regeln von Microsoft StyleCop erzwungen entsprechen , so dass StyleCop Compliance so einfach wie läuft den ReSharper sein kann "umformatieren Code" -Funktion?

War es hilfreich?

Lösung

Versuchen Sie, die ReSharper StyleCop Plugin unter: http://www.codeplex.com/StyleCopForReSharper

Andere Tipps

Ich suche die gleichen Dinge.

Hier ist ein eigener Typ Mitglied Layout:

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

basierend auf diesem, die nicht den Trick für mich getan hat, aber wer verdient den Kredit: http://www.clydesdalesoftware.net/blogs/jluif/CommentView,guid,1875594b-0d23-401f-8e22-f1cbf87beefe.aspx

Dies ist ein Header-Schnipsel, die StyleCop erfüllt:

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

Immer noch nicht ganz da, aber es ist ein Anfang.

Da diese Antwort das benutzerdefinierte Mitglied Layout wird im StyleCop für ReSharper Plugin gesetzt worden. Siehe hier

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top