标签: code-analysis

使用 Roslyn CodeFixProvider 向方法添加参数

我正在编写一个Roslyn 代码分析器,我想确定一个async方法是否不采用CancellationToken,然后建议添加它的代码修复:

 //Before Code Fix:
 public async Task Example(){}

 //After Code Fix
 public async Task Example(CancellationToken token){}
Run Code Online (Sandbox Code Playgroud)

我已经DiagnosticAnalyzer通过检查 将连接起来以正确报告诊断methodDeclaration.ParameterList.Parameters,但我找不到用于将 a 添加Paramater到的Roslyn APIParameterList里面CodeFixProvider。

这是我到目前为止所得到的:

private async Task<Document> HaveMethodTakeACancellationTokenParameter(
        Document document, SyntaxNode syntaxNode, CancellationToken cancellationToken)
{
    var method = syntaxNode as MethodDeclarationSyntax;

    // what goes here?
    // what I want to do is: 
    // method.ParameterList.Parameters.Add(
          new ParameterSyntax(typeof(CancellationToken));

    //somehow return the Document from method         
} …
Run Code Online (Sandbox Code Playgroud)

c# code-analysis roslyn roslyn-code-analysis

6
推荐指数
1
解决办法
1695
查看次数

抑制 CS0169 和 CS0649

我有几个类,它们的字段仅通过反射分配或使用。因此,这些字段会导致以下警告:

CS0169: The field [...] is never used
CS0649: Field [...] is never assigned to, and will always have its default value 0
Run Code Online (Sandbox Code Playgroud)

解决方案是在所有这些类上使用 SuppressMessageAttribute,但这似乎不干净,因为相关类已经具有自定义属性。

我更喜欢这样的东西:

[KeepMyFields]
class SomeClass
{
    int usedField;
}

class KeepMyFieldsAttribute : System.Diagnostics.CodeAnalysis.SuppressMessageAttribute
{
    // [...]
}
Run Code Online (Sandbox Code Playgroud)

但是,SuppressMessageAttribute 是密封的。除了向每个相关类添加代码片段之外,我还有什么其他选择?自定义 MSBuild 任务是否合适,或者是否有更简单的方法?

c# code-analysis

6
推荐指数
1
解决办法
3562
查看次数

如何加快声纳分析工作?

我有由具有源代码巨大行一个基于Java的应用程序(〜1M)。现在我使用詹金斯与声纳浇道-2.4来运行代码覆盖率和测试用例count.I分析已经从升级服务器sonarqube5.4到6.3.1。之前升级这项工作需要9hrs完成整个分析(仍然很长时间但很好)但是在升级到sonarqube-6.3.1相同的工作后需要13hrs完成相同的分析。

我如何至少在我更早的时候缩短分析时间9hr?

编辑

这是我JAVA_OPTS的sonarqube-6.3.1例子

sonar.web.javaOpts=-Xmx6G -Xms2G -XX:MaxPermSize=1G -XX:+HeapDumpOnOutOfMemoryError -Djava.net.preferIPv4Stack=true
Run Code Online (Sandbox Code Playgroud)

可用硬件:

$lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 2 NUMA node(s): 2 Vendor ID: GenuineIntel CPU family: 6 Model: 26 Stepping: 5 CPU MHz: 1596.000 BogoMIPS: 3999.44 Virtualization: VT-x L1d cache: …

code-analysis static-analysis jenkins sonarqube sonarqube-scan

6
推荐指数
1
解决办法
3459
查看次数

为 .Net Core 2.0 项目结果启用代码分析 CA0055 和 CA0052 错误

目前,在使用为我们的项目定义的自定义代码分析规则集配置 ASP.Net Core 2.0 应用程序后,我收到 CA0055 和 CA0052 代码分析错误(使用 Visual Studio 2017 和使用 MSBuild 命令)。通过提供的不同解决方案尝试了不同的方法来解决这些错误,但没有运气。请帮助我们解决这些代码分析错误...

以下是错误详情

MSBUILD:错误:CA0055:无法识别“D:\Source\Temp\WebClient\Business\bin\Debug\netco reapp2.0\Business.dll”的平台。[D:\Source\Temp\WebClient\Business\Business.csproj] MSBUILD:错误:CA0052:未选择任何目标。[D:\Source\Temp\WebClient\Business\Business.csproj] 代码分析完成 -- 2 个错误,0 个警告

谢谢,维努马达夫。

code-analysis msbuild-task asp.net-core asp.net-core-2.0

6
推荐指数
1
解决办法
4288
查看次数

警告 C26454:算术溢出:“-”操作在编译时产生负的无符号结果 (io.5)

代码分析:

ON_NOTIFY(TCN_SELCHANGE, IDC_TAB_HISTORY_TYPE,
  &CAssignHistoryDlg::OnTcnSelchangeTabHistoryType)
Run Code Online (Sandbox Code Playgroud)

警告 C26454:

算术溢出:'-' 操作在编译时 (io.5) 产生负的无符号结果。

的定义TCN_SELCHANGE是:

#define TCN_FIRST (0U-550U)
#define TCN_SELCHANGE           (TCN_FIRST - 1)
Run Code Online (Sandbox Code Playgroud)

我看不出我还能做什么!

c++ mfc code-analysis treecontrol visual-studio-2017

6
推荐指数
2
解决办法
7343
查看次数

Visual Studio:禁止对命名空间中的所有文件发出警告

我的项目中有以下命名空间。

在此处输入图片说明

我想禁用特定命名空间上的特定警告(比如 Project.ViewModels)。我可以通过在GlobalSuppression.cs

[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "type", Target = "~T:Project.ViewModels.MainViewModel.cs")]
[assembly: System.Diagnostics.CodeAnalysis.SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "type", Target = "~T:Project.ViewModels.TreeViewModel.cs")]
Run Code Online (Sandbox Code Playgroud)

我试图Scope从type改为namespace,namespaceanddescendants但没有奏效。

[assembly: SuppressMessage("Formatting", "RCS1057:Add empty line between declarations.", Justification = "<Pending>", Scope = "namespace", Target = "~T:Project.ViewModels")]
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?我正在使用 Visual Studio 2017。

c# code-analysis visual-studio roslyn roslyn-code-analysis

6
推荐指数
1
解决办法
2172
查看次数

如何防止代码分析dll被发布到生产服务器上?

使用 Visual studio 2019发布 ASP.NET Core 3 API netcoreapp3.1项目时,也会发布多个代码分析 dll。此外,这些 dll 还以 13 种语言发布,外加英文版本。

如何防止 Visual Studio 在生产服务器上发布代码分析 dll(包括英文版本)?

这些 dll 是:

Microsoft.CodeAnalysis.CSharp.resources.dll
Microsoft.CodeAnalysis.CSharp.Workspaces.resources.dll
Microsoft.CodeAnalysis.resources.dll
Microsoft.CodeAnalysis.Workspaces.resources.dll
Run Code Online (Sandbox Code Playgroud)

我在 Window 10 上使用 Microsoft Visual Studio Enterprise 2019 版本 16.4.5。

发布配置为:

Configuration: Release x64
Target framework: netcoreapp3.1
Deployment mode: Framework dependent
Target runtime: win-x64

File Publish Options:
Produce single file: no
Enable ReadyToRun compilation: yes
Delete all existing files prior to publish: yes
Run Code Online (Sandbox Code Playgroud)

dll code-analysis publishing visual-studio-2019 netcoreapp3.1

6
推荐指数
1
解决办法
1568
查看次数

代码分析失败(错误:org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments:意外的 2 个声明)

有谁知道这个错误:代码分析失败,出现异常:org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments:意外的2个声明?

感谢:D

error-handling code-analysis compiler-errors jetbrains-ide android-studio

6
推荐指数
0
解决办法
634
查看次数

如何从WebStorm代码分析中排除node_modules(左下角名为“问题”)

我在我的工作流程中广泛依赖此功能,但由于某些原因,此功能现在警告我来自 的所有问题node_modules,这显然我对此不感兴趣。

在此输入图像描述

如何在没有nodes_modules文件夹的情况下让 WebStorm 分析我的整个项目问题?

code-analysis compilation webstorm typescript tsconfig

6
推荐指数
1
解决办法
1518
查看次数

代码分析回来时建议不要使用"out"参数

我针对我创建的对象运行了VS 2008代码分析工具,并收到了以下建议......

警告147 CA1021:Microsoft.Design:考虑一种不要求'returnValue'为out参数的设计.

我发现"out"参数相当有用,并没有意识到它们被认为是一种不受欢迎的设计实践.我想知道是否有人可以了解我收到此警告的原因?如果这是不好的做法?为什么?什么是好的做法?

我很感激任何建议.

c# warnings code-analysis out-parameters visual-studio-2008

5
推荐指数
1
解决办法
1428
查看次数