2010-05-20 14 views
13

Las reglas por defecto StyleCop relacionados son:¿Cómo puedo hacer inserto VS2010 utilizando declaraciones en el orden dictado por StyleCop reglas

  1. Lugar using sentencias dentro namespace.
  2. Ordenar using declaraciones alfabéticamente.
  3. Pero ... Systemusing vienen primero (aún tratando de averiguar si eso significa solo using System; o using System[.*];).

lo tanto, mi caso de uso:

  • encuentro un error y decidir que tengo que agregar al menos una aserción inteligible para realizar la depuración menos doloroso para el individuo siguiente. Así que empiezo a escribir Debug.Assert( y Intellisense lo marca en rojo. Desplazo el mouse sobre Debug y entre using System.Diagnostics; y System.Diagnostics.Debug elijo la primera. Esto inserta using System.Diagnostics; después de todas las demás declaraciones using. Sería bueno si VS2010 no me ayudó a escribir código que no se compilará debido a advertencias como errores.

¿Cómo puedo hacer que VS2010 sea más inteligente? ¿Hay algún tipo de ajuste, o esto requiere un add-in completo de algún tipo?

+2

Tenga en cuenta que incluso MS señala que no tiene que seguir todas las reglas y tampoco ellas (re: # 1). – user7116

+0

Hm ... ¿qué reglas no usan ellos mismos? ¿Se decide sobre la base del proyecto? –

Respuesta

4

Para 2008, uso el complemento Power Commands. Incluye un comando para ordenar y eliminar declaraciones de uso no utilizadas. Lo asigno a Ctrl-O, Ctrl-R. No es automático, pero es muy rápido.

2010 también tiene un Comando de Energía, pero creo que el orden y el orden usando instrucciones está ahora incorporado. Solo necesita configurar un acceso directo para él.

PS. No uso Resharper debido a la sobrecarga de recursos. Cada vez que le digo a la gente que agita mi disco duro y aumenta el uso de la memoria, me dicen que "pruebe la última versión, ahora está mucho mejor". Es suficiente decir que nunca lo ha sido ... Sin embargo uso CodeRush Xpress.

+3

Eliminar y ordenar se introdujo en VS2008 – stuartd

3

Puede hacer que VS2010 sea más inteligente al usar Resharper (www.jetbrains.com), un complemento completo. Puede hacer todo esto por usted (y mucho más) y vale la pena el precio. El complemento Resharper "StyleCop for Resharper" puede incluso verificar las violaciones de StyleCop sobre la marcha y subrayar su código de la misma forma que Visual Studio lo hace por los errores.

6

Con respecto a su número 1, puede editar los elementos de la plantilla del proyecto utilizando las instrucciones here o here. He hecho esto para VS 2K8 para hacer que StyleCop y FxCop estén felices de forma predeterminada, pero no he tenido tiempo de hacerlo para el 2010, ya que el procedimiento es un poco tedioso y siempre existe la posibilidad de que un paquete de servicio VS pueda sobrescribirlos. .

Por ejemplo, he editado el Program.cs en la plantilla ConsoleApplication a tener este aspecto:

// <copyright file="Program.cs" company="$registeredorganization$"> 
// Copyright (c) $year$ All Rights Reserved 
// </copyright> 
// <author></author> 
// <email></email> 
// <date>$time$</date> 
// <summary></summary> 

namespace $safeprojectname$ 
{ 
    using System; 
    using System.Collections.Generic; 
    $if$ ($targetframeworkversion$ == 3.5)using System.Linq; 
    $endif$using System.Text; 

    /// <summary> 
    /// Contains the program's entry point. 
    /// </summary> 
    internal static class Program 
    { 
     /// <summary> 
     /// The program's entry point. 
     /// </summary> 
     /// <param name="args">The command-line arguments.</param> 
     private static void Main(string[] args) 
     { 
     } 
    } 
} 

y los AssemblyInfo.cs a tener este aspecto:

// <copyright file="AssemblyInfo.cs" company="$registeredorganization$"> 
// Copyright (c) $year$ All Rights Reserved 
// </copyright> 
// <author></author> 
// <email></email> 
// <date>$time$</date> 
// <summary></summary> 

using System; 
using System.Reflection; 
using System.Runtime.InteropServices; 

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information 
// associated with an assembly. 
[assembly: AssemblyTitle("$projectname$")] 
[assembly: AssemblyDescription("")] 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCompany("$registeredorganization$")] 
[assembly: AssemblyProduct("$projectname$")] 
[assembly: AssemblyCopyright("Copyright © $registeredorganization$ $year$")] 
[assembly: AssemblyTrademark("")] 
[assembly: AssemblyCulture("")] 

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components. If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type. 
[assembly: ComVisible(false)] 

[assembly: CLSCompliant(true)] 

// The following GUID is for the ID of the typelib if this project is exposed to COM 
[assembly: Guid("$guid1$")] 

// Version information for an assembly consists of the following four values: 
// 
//  Major Version 
//  Minor Version 
//  Build Number 
//  Revision 
// 
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below: 
// [assembly: AssemblyVersion("1.0.*")] 
[assembly: AssemblyVersion("1.0.0.0")] 
[assembly: AssemblyFileVersion("1.0.0.0")] 

He presentado an incident en Microsoft Conéctese para que el código autogenerado de sus herramientas satisfaga StyleCop/FxCop y sus documentos de pautas de codificación.

+1

+1 para apuntar a embellecer las plantillas. – Filburt

Cuestiones relacionadas