【问题标题】:Using StyleCop in Asp.net Core在 Asp.net Core 中使用 StyleCop
【发布时间】:2017-05-15 09:27:50
【问题描述】:

根据this article 在 Asp.net Core 中使用 StyleCop,

1)将以下内容添加到project.json文件的dependencies部分:

 "StyleCop.Analyzers": {
  "version": "1.0.0",
  "type": "build"
}

并构建项目。

2) 创建stylecop.json 并在上面添加你的配置,这是我的stylecop.json 内容:

{
   "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
   "settings": {
     "documentationRules": {
       "documentInterfaces": true,
       "documentInternalMembers": false    
   }
  }
 }

3)project.json文件的buildOptions节点下如下:

  "additionalArguments": ["/additionalfile:path/to/stylecop.json" ]

但我遇到了一些错误:问题是什么?

【问题讨论】:

  • stylecop.json的路径是什么? stylecop.json 在您的解决方案中位于哪里,您必须在附加文件中提及该路径。
  • 另外,在构建项目时确保错误列表输出设置为Build + IntelliSense
  • 我将 addtionalArguments 更改为 ` "additionalArguments": [ "stylecop.json" ], but it gives me another error: Type or namespace definition, or end-of-file expected`
  • 试试这样 - "additionalArguments": ["/additionalfile: stylecop.json"]

标签: asp.net-core stylecop


【解决方案1】:

简答

当 StyleCop 找不到您的 stylecop.json 时,就会出现这些 NullReferenceException 错误。这是related GitHub issue

要修复它(假设您的 stylecop.json 位于项目的根目录中)将路径更改为:

"additionalArguments": [
  "/additionalfile:./stylecop.json"
]

完整的工作示例

目录结构

bin
obj
Program.cs
project.json
project.lock.json
stylecop.json
StyleCop.ruleset

项目.json

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true,
    "warningsAsErrors": true,
    "nowarn": [
      "1591"
    ],
    "xmlDoc": true,
    "additionalArguments": [
      "/ruleset:./StyleCop.ruleset",
      "/additionalfile:./stylecop.json"   <----- This is probably the problem.
    ]
  },
  "dependencies": {
    "StyleCop.Analyzers": {
      "type": "build",
      "version": "1.0.0"
    }
  },
  "frameworks": {
    "netcoreapp1.0": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.0.1"
        }
      }
    }
  }
}

stylecop.json

{
  "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json",
  "settings": {
    "documentationRules": {
      "documentExposedElements": false,
      "documentInterfaces": false
    }
  }
}

StyleCop.ruleset

<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description=" " ToolsVersion="14.0">
  <Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
    <Rule Id="SA0000" Action="Warning" />
    <Rule Id="SA1005" Action="Warning" />
    <Rule Id="SA1208" Action="Warning" />
    <Rule Id="SA1028" Action="Warning" />
    <Rule Id="SA1210" Action="Warning" />
  </Rules>
</RuleSet>

克隆并运行示例

git clone git@github.com:bigfont/StackOverflow.git
cd .\StackOverflow\AspNetCoreStyleCop\
dotnet restore
dotnet build

【讨论】:

  • 当我想创建 StyleCop.ruleset 它给我错误 Data at the root level is invalid
  • 为什么?我按照你说的做,它也不允许我编辑它,并给我同样的错误
  • @ShaunLuttin 新年快乐!只是利用这个问题-是否有必要提供StyleCop.ruleset文件?
  • @Sanket 也祝你新年快乐。 StyleCop.ruleset 不是必需的。
  • @pejman 我不知道您引入的 XML 错误是什么。我为您将示例添加到 GitHub(请参阅答案的编辑)。尝试一下,看看您是否遇到同样的错误。
猜你喜欢
  • 2017-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2017-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多