我正在使用 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
文件夹。