SonarSource/sonar-dotnet
GitHub: SonarSource/sonar-dotnet
面向 C# 和 VB.NET 的 Roslyn 静态代码分析器,帮助开发团队在编码和构建阶段自动发现 Bug、漏洞及代码异味。
Stars: 909 | Forks: 242
# C\# 和 VB.NET 的代码质量与安全
[](https://dev.azure.com/sonarsource/DotNetTeam%20Project/_build/latest?definitionId=77&branchName=master)
|产品|质量门|覆盖率|
|:--:|:--:|:--:|
|Analyzer|[](https://sonarcloud.io/dashboard?id=sonaranalyzer-dotnet)|[](https://sonarcloud.io/component_measures?id=sonaranalyzer-dotnet&metric=coverage)|
|Plugin|[](https://sonarcloud.io/dashboard?id=org.sonarsource.dotnet%3Asonar-dotnet)|[](https://sonarcloud.io/component_measures?id=org.sonarsource.dotnet%3Asonar-dotnet&metric=coverage)|
[SonarQube server](https://www.sonarsource.com/products/sonarqube)、[SonarQube cloud](https://www.sonarsource.com/products/sonarcloud) 和 [SonarQube for IDE](https://www.sonarsource.com/products/sonarlint) 代码质量与安全产品中针对 C# 和 VB.NET 语言的[静态分析](https://en.wikipedia.org/wiki/Static_program_analysis)。这些 Roslyn analyzer 允许您交付具有集成代码质量和安全性的代码,通过帮助您发现和纠正代码库中的 bug、漏洞和代码异味,从而确保代码是安全、可靠且可维护的。
## 功能
* 470+ 条 C# 规则和 210+ 条 VB.NET 规则
* 指标(认知复杂度、重复、代码行数等)
* 导入来自 Visual Studio Code Coverage、dotCover、OpenCover、Coverlet、Altcover 的[测试覆盖率报告](https://community.sonarsource.com/t/9871)。
* 导入第三方 Roslyn Analyzer 结果
* 支持[自定义规则](https://github.com/SonarSource/sonarqube-roslyn-sdk)
## 实用的公共资源
* [项目主页](https://redirect.sonarsource.com/plugins/csharp.html)
* [问题追踪](./docs/issues.md)
### Nuget.org 包
* [SonarAnalyzer.CSharp](https://www.nuget.org/packages/SonarAnalyzer.CSharp/)
* [SonarAnalyzer.VisualBasic](https://www.nuget.org/packages/SonarAnalyzer.VisualBasic/)
### 与 SonarQube 集成
* [使用 SonarScanner for .NET 分析项目](https://redirect.sonarsource.com/doc/install-configure-scanner-msbuild.html)
* [导入代码覆盖率](https://community.sonarsource.com/t/9871)
* [SonarQube 与代码覆盖率](https://community.sonarsource.com/t/4725)
## 开始使用
* [构建、测试和调试 .NET analyzer](./docs/contributing-analyzer.md)
* [构建、测试和调试 Java 插件](./docs/contributing-plugin.md)
* [如何重新生成 NuGet lock 文件](./docs/regenerate-lock-files.md)
## 自定义规则
要请求新规则,请在[我们的社区论坛](https://community.sonarsource.com/c/suggestions/)上联系我们。
如果您有关于某个规则的想法,但不确定是否每个人都需要它,您可以实现自己的 Roslyn analyzer。
- 您可以从[微软的这篇教程](https://docs.microsoft.com/en-us/dotnet/csharp/roslyn-sdk/tutorials/how-to-write-csharp-analyzer-code-fix)开始学习如何编写 analyzer。
- 所有基于 Roslyn 的问题都会被 [SonarScanner for .NET](https://redirect.sonarsource.com/doc/install-configure-scanner-msbuild.html) 捕获,并作为外部问题推送到 SonarQube。
- 如果您想从 SonarQube 管理您的规则,还可以查看 [SonarQube Roslyn SDK](https://github.com/SonarSource-VisualStudio/sonarqube-roslyn-sdk),将您的 Roslyn analyzer 嵌入到 SonarQube 插件中。
## 配置规则
### SonarQube for IDE
最简单的方法是在 SonarQube 中配置一个 Quality Profile。使用 SonarQube for IDE Connected Mode 连接到 SonarQube Server 或 Cloud。
### 独立 NuGet
来自独立 NuGet 包的规则可以像其他基于 Roslyn 的 analyzer 一样,通过使用 `.globalconfig` 或 `.editorconfig` 文件来启用或禁用。
参见:https://learn.microsoft.com/en-us/visualstudio/code-quality/use-roslyn-analyzers?view=vs-2022#set-rule-severity-in-an-editorconfig-file
如果规则已参数化,则可以使用 `SonarLint.xml` 额外文件来更改参数值。
第一步是创建一个名为 `SonarLint.xml` 的新文件,其结构如下:
```
sonar.cs.analyzeGeneratedCode
false
S107
max
2
```
然后,更新项目以包含此额外文件:
```
```
## 安全问题
如果您认为自己发现了 Sonar 产品中的安全漏洞,请查阅[此文档](./SECURITY.md)。
## 许可证
版权所有 SonarSource Sàrl。
根据 [SONAR Source-Available License v1.0](https://www.sonarsource.com/license/ssal/) 获得许可
标签:JS文件枚举, Redis利用, Roslyn, VB.NET, 云安全监控, 代码安全审计, 多人体追踪, 安全专业人员, 静态分析