【问题标题】:Exclude some lines of php code from sonarqube analysis从 sonarqube 分析中排除一些 php 代码行
【发布时间】:2023-03-16 20:19:02
【问题描述】:

有没有办法在不排除整个源代码文件的情况下从 sonarqube 分析中排除某些代码行?也许带有注释或类似的东西?

我会给你一个具体的例子,我需要为一个未使用的函数参数排除某种代码气味:

我实现了这样的验证方法:

public function validateTruth(string $attribute, $value) : bool
{
    $acceptable = [
        '0',
        0,
        'false',
        false,
        '1',
        1,
        'true',
        true,
        'no',
        'yes',
    ];

    return in_array($value, $acceptable, true);
}

为了使用 extend 方法扩展 \Illuminate\Contracts\Validation\Factory:

$validationFactory->extend(
    'truth',
    Validator::class . @validateTruth',
    'The :attribute field must be some kind of truth value.'
);

我的实现没有使用所有必需的参数,但我不能只省略第一个参数。如果没有 $attribute 参数,扩展将无法与回调方法一起使用。因此,extend 方法显然需要带有特定参数集的回调,但它不提供接口或类似的东西,因此丢失的参数将自动从 sonarqube 中排除。

有没有办法只排除这种代码异味,而不从声纳分析中排除整个函数或文件?我更喜欢源代码中的解决方案,因为我们在开发生命周期中使用不同的 sonarqube 实例,因此在 Web 前端标记此类代码异味会更难维护。

【问题讨论】:

    标签: php sonarqube code-analysis


    【解决方案1】:

    您可以通过 web-ui 解决问题,或者,如果您更喜欢在代码中解决问题,请使用 NOSONAR 注释进行标记。

    更多信息请参见the official FAQ

    【讨论】:

    • 感谢您的快速回复。带有 //NOSONAR 注释的建议解决方案似乎适用于声纳运行器。但是这个评论似乎在 IDE 中不起作用(至少对于 PHP),尽管在 jira.sonarsource.com/browse/SLI-20
    • @GordonGünther 您使用的是哪个 IDE?在我刚刚验证的 IntelliJ 中,NOSONAR 工作正常。尽管如此:IntelliJ 将继续在这些方面提出自己的问题。试试这个:long i = 0l;(1 个 IntelliJ 问题 + 1 个 SonarQube 问题),然后是:long i = 0l;//NOSONAR(1 个 IntelliJ 问题)。
    • 我正在使用 PhpStorm,在我重新启动 IDE 后它工作了。
    猜你喜欢
    • 1970-01-01
    • 2021-08-29
    • 2020-04-17
    • 2014-09-04
    • 1970-01-01
    • 2019-12-26
    • 2017-04-29
    • 1970-01-01
    • 2018-09-23
    相关资源
    最近更新 更多