没有在本地构建上获得CA1822

时间:2012-09-26 11:40:42

标签: visual-studio-2010 msbuild build-automation code-analysis

我知道软件工程师通常不会尖叫,嘿所有我没有收到错误,你能帮我拿一个!但是目前我需要将此错误显示在本地,因为它在我们的CI版本上失败了。当我没有在本地获得错误时,因为成员名称的语法是at,因此很难抑制(请相信我,我只需要压制它,因为它是从WF工作流生成的代码)最好的,痛苦的。

构建服务器的CI构建使用Release配置,我在Release本地构建,所以理想情况下我会得到相同的错误(一般情况下)做)。

以下是我的项目文件中Release部分的快照:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>bin\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
  <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
  <RunCodeAnalysis>true</RunCodeAnalysis>
  <CodeAnalysisRuleSet>..\..\SolutionAnalysis.ruleset</CodeAnalysisRuleSet>
  <StyleCopEnabled>true</StyleCopEnabled>
  <StyleCopTreatErrorsAsWarnings>false</StyleCopTreatErrorsAsWarnings>
  <NoWarn>1591</NoWarn>
</PropertyGroup>

在构建服务器上我收到此错误(为了安全性而删除了类型和路径名称):

  

obj \ Release \ WorkflowName_BeforeInitializeComponentHelper.cs (18): CA1822 :Microsoft.Performance:'this'参数(或'我从不使用'WorkflowName.BeforeInitializeComponent(ref bool)'的“在Visual Basic中”。将成员标记为静态(或在Visual Basic中为Shared)或在方法体中使用“this”/“Me”,或者在适当的情况下使用至少一个属性访问者。

我希望你们都能帮我弄清楚为什么Visual Studio在Release本地构建期间没有出现错误......哦,INSANITY!

1 个答案:

答案 0 :(得分:0)

好的,所以我现在通过升级本地版本的StyleCop在本地获得此错误。我不确定为什么这对代码分析有任何影响,但老实说所有这些工具都不能很好地协同工作,因为我们还安装了ReSharper组织范围,这会引起很多悲痛。

所以,话虽这么说,我最终解决这个问题的方法是为每个WF活动构建partial类,即XAML文件**,看起来像这样:

// ReSharper disable CheckNamespace
namespace {namespace}
// ReSharper restore CheckNamespace
{
    using System.CodeDom.Compiler;

    /// <summary>
    /// Sets up the [GeneratedCode] attribute for the generated workflow class so that code analysis isn't performed.
    /// </summary>
    [GeneratedCode("", "1.0")]
    public partial class {classname}
    {
    }
}

您可以从构成WF活动的XAML中的{namespace}属性收集{classname}x:Class(右键单击XAML文件并选择“查看代码”)

**您不需要它们用于WF服务,即XAMLX文件