2

我正在使用 Scrutinizer-CI 的静态分析函数来提供有关我的 PHP 代码的反馈。根据他们的文档,我在项目的根目录中有一个.scrutinizer.yml文件,似乎成功地按照我希望的方式配置了 Scrutinizer 的选项。几乎。

其中一个选项是dependency_paths,它允许我指定包含依赖项的路径。据我在 Scrutinizer 交流过的人说...

“依赖项中列出的路径与完全排除的路径不同,因为我们会查看它们以查找它们定义的类或函数,以使您对其他文件的分析更加准确。但是,我们不会在这些文件中查找任何问题。”

不幸的是,这似乎对我不起作用。我使用 SAML 进行身份验证,因此simplesamlphp我的源代码中有一个文件夹。(您不能只通过 composer 之类的东西包含 simplesamlphp,因为您必须根据您的使用方式编辑一些配置文件等)。

我的文件的相关部分.scrutinizer.yml如下所示:

filter:
    paths:
        - application/*

tools:
    php_analyzer:
        dependency_paths:
            - application/simplesamlphp/*

(该application文件夹是我的源代码中的根级文件夹)。

这似乎确实可以防止simplesamlphp文件夹中发现的任何问题影响我的代码在 Scrutinizer 中的分数。但是,Scrutinizer 仍然报告该simplesamlphp文件夹中的代码存在数千个问题,因此很难找到实际上与我编写的代码有关的问题。

我使用dependency_paths设置错误吗?看起来它确实不像我被告知的那样工作……让我很困惑。

编辑:为了提供更多信息,我可以simplesamlephp使用该excluded_paths选项完全排除该文件夹。挑战在于让 Scrutinizer 查看我的依赖项中的类等(以便更好地理解我的代码),但不报告在依赖项中发现的任何问题。

编辑2:嗯,这很有趣。我尝试了我的文件的几个版本(相关部分).scrutinizer.yml,并看到了以下结果。

首先,我只是告诉 Scrutinizer 完全排除该simplesamlphp文件夹:

filter:
    paths:
        - application/*
    excluded_paths:
        - application/simplesamlphp/*

tools:
    php_analyzer:
        dependency_paths:
            - application/simplesamlphp/*

这使我能够看到我自己的代码的问题并修复它们。此时,我的项目在 Scrutinizer 上的得分是 9.54。然后我停止排除simplesamlphp

filter:
    paths:
        - application/*

tools:
    php_analyzer:
        dependency_paths:
            - application/simplesamlphp/*

此更改在 Scrutinizer 的分析中引入了 7756 个问题,但我的项目得分为 9.54(这意味着simplesamlphp正在报告中的问题,但不计入我的利益)。然后我尝试从路径中删除尾部斜杠和星号:

filter:
    paths:
        - application/*

tools:
    php_analyzer:
        dependency_paths:
            - application/simplesamlphp

此更改引入了 2002 个问题并修复了 3198 个问题,所有这些问题(已引入和已修复)都在simplesamlphp文件夹中。我完全没想到会有这样的效果。这也将我的项目在 Scrutinizer 上的得分降低到了 7.47,这意味着simplesamlphp文件夹中的问题现在正被计入我的利益。然后我尝试更改为单行数组语法dependency_paths

filter:
    paths:
        - application/*

tools:
    php_analyzer:
        dependency_paths: [application/simplesamlphp]

这没有效果。为了彻底起见,我/*在这个数组语法中添加了尾随:

filter:
    paths:
        - application/*

tools:
    php_analyzer:
        dependency_paths: [application/simplesamlphp/*]

这些结果也让我感到惊讶。此更改修复了 2002 年的问题,并使我的分数恢复到 9.54。已修复的问题和剩余的 4519 个问题都在simplesamlphp文件夹中。虽然这似乎让我更接近目标,但它仍然在我的依赖路径中的代码中留下了数千个问题。我不确定此时还可以尝试什么,所以我可能会回到简单地完全排除该simplesamlphp文件夹。

4

0 回答 0