13

相关的默认 StyleCop 规则是:

  1. using语句放在namespace.
  2. using字母顺序对语句进行排序。
  3. 但是......System using先来(仍然试图弄清楚这是否意味着只是using System;using System[.*];)。

所以,我的用例:

  • 我发现了一个错误并决定我至少需要添加一个可理解的 Assert 以减少对下一个人进行调试的痛苦。所以我开始打字Debug.Assert(,智能感知用红色标记它。我将鼠标悬停在Debug两者之间using System.Diagnostics;,然后System.Diagnostics.Debug选择前者。这将插入using System.Diagnostics; 所有其他using语句之后。如果 VS2010 没有帮助我编写由于错误警告而无法构建的代码,那就太好了。

如何让 VS2010 更智能?是否有某种设置,或者这是否需要某种成熟的插件?

4

3 回答 3

6

关于您的 #1,您可以使用此处此处的说明编辑项目模板项。我已经为 VS 2K8 做到了这一点,默认情况下让 StyleCop 和 FxCop 满意,但我还没有在 2010 年开始这样做,因为我发现这个过程有点乏味,而且 VS 服务包总是有可能覆盖它们.

例如,我在 ConsoleApplication 模板中编辑了 program.cs,如下所示:

// <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)
        {
        }
    }
}

和 assemblyinfo.cs 看起来像这样:

// <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")]

我在 Microsoft Connect 上提交了一个事件,大意是他们的工具自动生成的代码应该满足 StyleCop/FxCop 和他们的编码指南文档。

于 2010-05-20T16:24:54.670 回答
4

对于 2008 年,我使用Power Commands插件。它包括一个命令来排序和删除未使用的 using 语句。我将其映射到 Ctrl-O、Ctrl-R。它不是自动的,但它非常快。

2010 也有一个 Power Commands,但我认为排序和排序使用语句的东西现在已经内置了。你只需要为它设置一个快捷方式。

PS。由于资源开销,我不使用 Resharper。每次我告诉人们它会破坏我的硬盘驱动器并推动内存使用量激增时,他们都会告诉我“尝试最新版本 - 现在好多了”。可以说,它从来没有……不过,我确实使用 CodeRush Xpress。

于 2010-05-20T15:37:37.573 回答
3

您可以使用成熟的插件 Resharper (www.jetbrains.com) 使 VS2010 更智能。它可以为您做所有这些事情(以及更多),而且物有所值。Resharper 插件“StyleCop for Resharper”甚至可以即时检查 StyleCop 违规情况,并像 Visual Studio 对错误所做的那样为代码添加下划线。

于 2010-05-20T15:37:31.003 回答