欺骗声纳忽略注释代码

问题描述 投票:0回答:4

我想知道是否有一种方法可以欺骗声纳忽略注释掉的代码,同时仍将其保留在内部。我想将代码片段留在其中以便稍后修改,但也想提高合规性。

我有这个例子

// bdgItems.setGpIncrease(zero);
这就是我遇到合规问题的地方。另一方面,像
// get data points
这样的常规评论不会引起问题。我想将带注释的代码保留在那里,以便在下一个开发周期中继续我停止的地方,但就像我说的,减少问题。我尝试了几种方法来欺骗它,例如在单词之间添加空格的
// [DELETE THIS] bdgItems.setGpIncrease(zero);
// bdgItems . setGpIncrease ( zero );
,但它仍然知道!我想知道你们中的一些兽医是否知道任何技巧[我对声纳相当陌生]。

提前致谢!

sonarqube
4个回答
2
投票

不建议这样做,正如 Mithfindel 已经建议的那样。

只需用下划线替换点和分号即可。


代码示例:

documentClient.deleteDatabase("dbs/" + DATABASE_ID, null);

没有警告的结果评论将是:

// documentClient_deleteDatabase("dbs/" + DATABASE_ID, null)_


1
投票

这是一个典型的技术债务管理问题。

如果您“将其留在那里以供稍后使用”,那么您确实在源代码中添加了技术债务,并且您打算稍后偿还。因此,SonarQube 将此注释掉的代码标记为问题是有意的行为。

您仍然可以选择将这些问题标记为误报,但我确实相信您应该将它们保留为真实问题,哪怕只是为了提醒自己回来修复它们。


0
投票

使用 C# 省略行尾的分号会欺骗 Sonar(也可能适用于其他语言)。

这会发出

S125: Remove this commented out code
警告:

// string name = "Mustafa";

但这消除了警告:

// string name = "Mustafa"

实际上,Sonar 对注释掉的代码的检测是基于启发式的,因此不能完美地工作。这个呢?

// This Line Is Not Code;

此行确实发出

S125
警告。

另一方面,我不建议抑制或欺骗此警告,因为将代码留在注释中会使源代码膨胀,妨碍可读性,有时会让开发人员感到困惑,浪费他们的时间。

最后一点是注释代码可能有其用处。我倾向于在注释中留下一些可视化代码,用图形编程作为调试辅助。例如,在某些图形计算中,在屏幕上显示临时形状可能有助于验证其坐标或大小是否计算正确。但那些被注释掉的代码在所有注释中可能不会超过%0.1。


0
投票

在控制台中,右键单击该消息,选择停用此规则并重新加载窗口。

© www.soinside.com 2019 - 2024. All rights reserved.