问题标签 [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.
php - 如何编写具有项目范围上下文而不是仅在类级别上的 PHP Mess Detector 规则?
我想编写一个规则来查找项目中所有公共未使用的功能。我已经复制并修改了原始的 UnusedPrivateMethod 以使其工作。但可惜它工作得太好了,找到了项目中的所有公共功能。
这样做是因为公共函数通常是从其他类调用的,并且规则的范围似乎在类级别。因此,在每个类中都没有使用公共函数,因此也是结果的一部分。
因此,我如何编写具有项目级别而不是类级别的上下文的规则的问题?
php - 如何设置 PHPMD 规则属性?
我是使用 PHP Mess Detector (PHPMD) 的新手,想了解一些参数。例如,命名规则给我这样的输出:
我可以在不复制和更改 XML 规则集文件的情况下更改“配置的最小长度”吗?
该消息向我表明此规则集的用户可以配置这些边界,并且在命名规则文档中是具有“默认值”的每个方法的“属性”摘要。
我可以在命令行上指定属性,还是某处有通用配置文件?
php - 避免使用静态访问异常
我刚刚第一次启动了 PHPMD,可以预见的是,我遇到了一个我无法弄清楚的错误。错误是
避免在方法“setLang”中使用对类“InvalidArgumentException”的静态访问。
代码是
我尝试了各种不同的东西,但我认为归根结底Exception
是一个静态工厂(???),所以它必须具有静态访问权限。但是,PHPMD 的家伙肯定比我聪明,所以这不会让他们烦恼。
为什么会出现此警告,以及如何解决?
php - PHPMD 避免对父级的静态访问
有没有办法避免parent::
PHP 类中的静态访问器,或者这是其中一个使用的时间@SuppressWarnings(StaticAccess)
?
StaticAccess
同样,这个警告似乎出现在可疑的地方。例如,异常处理 - 当 I 时throw new Exception(...)
,PHPMD 抱怨静态访问。但是......实际上并没有其他方法可以做到这一点(我发现)所以我有比我想要的更多的警告抑制器。这是正常的吗?
编辑
根据要求,这是一个示例 - 它非常简单:
PHPMD 将报告上述两个错误:一个StaticAccess
错误Exception
,以及一个调用StaticAccess
错误。parent::__construct()
为避免这种情况,我必须用 来标记这两个类@SuppressWarnings
,这看起来很笨拙,并且也不会显示“真正的”静态访问问题。
php - PHP 静态代码分析 - 禁用误报警告
在我们的 CI 服务器上,我们运行 PHPcodesniffer
和phpmd
. 提出的一些问题是假阳性的。如何禁用 PHP 文件的某些部分以供那些(如 Java 中的 @SupressWarning(...) )分析?谢谢!
php - 为什么这段代码的圈复杂度很高 - 或者它是 Jenkins 中 PHPMD 中的一个错误?
我试图了解 Cyclomatic Complexity 的工作原理以及如何避免警告。是的,我知道编写代码的目的不是避免任意警告,但我至少想知道发生了什么,这样我就可以决定我看到的代码是好是坏。
我有一个看起来像这样的函数:
这被标记为具有 10 的圈复杂度。这怎么可能?从文档中,我将其视为 1。唯一的可能性是 PHPMD 正在下降到各种方法调用中。
但如果是这样,那么我没有办法“修复”这种方法。一般来说,我会通过提取更小的辅助方法来降低方法的复杂性。这个方法已经被重构为那些不同的 update() 方法,以消除发生的一堆条件更新。原始方法的圈复杂度也为 10,重构什么也没做。
或者问题可能更简单——我正在通过与 Jenkins 建立的持续集成来运行 PHPMD。PHPMD 没有使用最新的代码会不会有问题?在我已经将类重构到行数限制以下之后,我遇到了一些类似的问题,它会将一个类标记为有太多行。
php - PHPMD - 避免使用静态访问类 - 使用常量?
我正在使用 PHP Mess Detector 1.5.0 并且有许多问题,我认为这些问题不是问题。
在这段代码中,我使用类似于 C++ 中的枚举的常量来处理选项。因此,如果我想添加一些东西,我将代码中的 FOO::ADD 传递给类,这与 1 相同。
我可以在 PHPUnit 中毫无问题地测试这个类,因为我验证了常量,然后我可以将值和常量传递给函数。
我不确定为什么 PHPMD 会抱怨这一点,特别是因为它是一个在 PHP 中安全引用的 const 值。
jenkins - Jenkins & Phing 遇到目录引用问题
我已经用 Jenkins 和 Phing 建立了我的第一个 CI 环境,它大部分运行得很完美,尽管我有一些我无法解决的问题。我在确定如何在构建过程的各个部分中引用目录时经常遇到麻烦,感谢您对以下内容的任何想法:
构建.xml
问题 1: phpmd 不会输出报告文件,但 Jenkins 日志中没有报告错误。相反,它将整个 xml 记录到标准输出并在 Jenkins 日志中报告。
问题 2:我无法让 phpDox 在我的源代码中排除某些目录。下面是我的 phpdox.xml。
请问有谁知道我可以使用的正确排除面罩吗?我的文件结构是:
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) 不像在我看来几乎相同的控制结构那么复杂?
php - PHP 混乱检测器可选参数
我有接口 X
然后我有课
这是完全正常的,因为我不想$y
在X
. 但是 PMD 大喊 $y 是未使用的参数。
我可以做些什么来轻松改变 PMD 行为?我发现的唯一解决方案是用@SuppressWarnings(unused)
注释来抑制警告,我敢打赌那不是我真正喜欢的。