问题标签 [phpmd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
458 浏览

php - 如何编写具有项目范围上下文而不是仅在类级别上的 PHP Mess Detector 规则?

我想编写一个规则来查找项目中所有公共未使用的功能。我已经复制并修改了原始的 UnusedPrivateMethod 以使其工作。但可惜它工作得太好了,找到了项目中的所有公共功能。

这样做是因为公共函数通常是从其他类调用的,并且规则的范围似乎在类级别。因此,在每个类中都没有使用公共函数,因此也是结果的一部分。

因此,我如何编写具有项目级别而不是类级别的上下文的规则的问题?

0 投票
1 回答
1827 浏览

php - 如何设置 PHPMD 规则属性?

我是使用 PHP Mess Detector (PHPMD) 的新手,想了解一些参数。例如,命名规则给我这样的输出:

我可以在不复制和更改 XML 规则集文件的情况下更改“配置的最小长度”吗?

该消息向我表明此规则集的用户可以配置这些边界,并且在命名规则文档中是具有“默认值”的每个方法的“属性”摘要。

我可以在命令行上指定属性,还是某处有通用配置文件?

0 投票
4 回答
9622 浏览

php - 避免使用静态访问异常

我刚刚第一次启动了 PHPMD,可以预见的是,我遇到了一个我无法弄清楚的错误。错误是

避免在方法“setLang”中使用对类“InvalidArgumentException”的静态访问。

代码是

我尝试了各种不同的东西,但我认为归根结底Exception是一个静态工厂(???),所以它必须具有静态访问权限。但是,PHPMD 的家伙肯定比我聪明,所以这不会让他们烦恼。

为什么会出现此警告,以及如何解决?

0 投票
3 回答
3399 浏览

php - PHPMD 避免对父级的静态访问

有没有办法避免parent::PHP 类中的静态访问器,或者这是其中一个使用的时间@SuppressWarnings(StaticAccess)

StaticAccess同样,这个警告似乎出现在可疑的地方。例如,异常处理 - 当 I 时throw new Exception(...),PHPMD 抱怨静态访问。但是......实际上并没有其他方法可以做到这一点(我发现)所以我有比我想要的更多的警告抑制器。这是正常的吗?

编辑

根据要求,这是一个示例 - 它非常简单:

PHPMD 将报告上述两个错误:一个StaticAccess错误Exception,以及一个调用StaticAccess错误。parent::__construct()

为避免这种情况,我必须用 来标记这两个类@SuppressWarnings,这看起来很笨拙,并且也不会显示“真正的”静态访问问题。

0 投票
2 回答
545 浏览

php - PHP 静态代码分析 - 禁用误报警告

在我们的 CI 服务器上,我们运行 PHPcodesnifferphpmd. 提出的一些问题是假阳性的。如何禁用 PHP 文件的某些部分以供那些(如 Java 中的 @SupressWarning(...) )分析?谢谢!

0 投票
2 回答
6112 浏览

php - 为什么这段代码的圈复杂度很高 - 或者它是 Jenkins 中 PHPMD 中的一个错误?

我试图了解 Cyclomatic Complexity 的工作原理以及如何避免警告。是的,我知道编写代码的目的不是避免任意警告,但我至少想知道发生了什么,这样我就可以决定我看到的代码是好是坏。

我有一个看起来像这样的函数:

这被标记为具有 10 的圈复杂度。这怎么可能?从文档中,我将其视为 1。唯一的可能性是 PHPMD 正在下降到各种方法调用中。

但如果是这样,那么我没有办法“修复”这种方法。一般来说,我会通过提取更小的辅助方法来降低方法的复杂性。这个方法已经被重构为那些不同的 update() 方法,以消除发生的一堆条件更新。原始方法的圈复杂度也为 10,重构什么也没做。

或者问题可能更简单——我正在通过与 Jenkins 建立的持续集成来运行 PHPMD。PHPMD 没有使用最新的代码会不会有问题?在我已经将类重构到行数限制以下之后,我遇到了一些类似的问题,它会将一个类标记为有太多行。

0 投票
1 回答
2422 浏览

php - PHPMD - 避免使用静态访问类 - 使用常量?

我正在使用 PHP Mess Detector 1.5.0 并且有许多问题,我认为这些问题不是问题。

在这段代码中,我使用类似于 C++ 中的枚举的常量来处理选项。因此,如果我想添加一些东西,我将代码中的 FOO::ADD 传递给类,这与 1 相同。

我可以在 PHPUnit 中毫无问题地测试这个类,因为我验证了常量,然后我可以将值和常量传递给函数。

我不确定为什么 PHPMD 会抱怨这一点,特别是因为它是一个在 PHP 中安全引用的 const 值。

0 投票
1 回答
1198 浏览

jenkins - Jenkins & Phing 遇到目录引用问题

我已经用 Jenkins 和 Phing 建立了我的第一个 CI 环境,它大部分运行得很完美,尽管我有一些我无法解决的问题。我在确定如何在构建过程的各个部分中引用目录时经常遇到麻烦,感谢您对以下内容的任何想法:

构建.xml

问题 1: phpmd 不会输出报告文件,但 Jenkins 日志中没有报告错误。相反,它将整个 xml 记录到标准输出并在 Jenkins 日志中报告。

问题 2:我无法让 phpDox 在我的源代码中排除某些目录。下面是我的 phpdox.xml。

请问有谁知道我可以使用的正确排除面罩吗?我的文件结构是:

0 投票
2 回答
1065 浏览

php - 为什么 switch(true) 的 NPath 复杂度比 if() elseif() 小?

我有这个函数负责将文件名和 mime 类型转换为更“人性化”的东西(例如 file.png、image/png 到 [Image, PNG])。我发现有趣的是语句组比if() elseif()语句具有更高的 NPath 复杂性switch(true)

使用以下代码,PHP Mess Detector 输出 NPath 为 4410:

如果我们然后用if elseif以下替换特殊情况:

PHP Mess Detector 报告了 1960 年的 NPath 复杂性。

为什么是这样?是什么让 switch(true) 不像在我看来几乎相同的控制结构那么复杂?

0 投票
1 回答
583 浏览

php - PHP 混乱检测器可选参数

我有接口 X

然后我有课

这是完全正常的,因为我不想$yX. 但是 PMD 大喊 $y 是未使用的参数。

我可以做些什么来轻松改变 PMD 行为?我发现的唯一解决方案是用@SuppressWarnings(unused)注释来抑制警告,我敢打赌那不是我真正喜欢的。