问题标签 [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代码的工具来检查返回值是否被正确使用?
假设我有以下代码:
我在整个代码中都有很多调用$thirdPartyAPI
,所以我不想忘记检查是否$result
是有效的或发生了错误。
我检查了PHP Code Sniffer和PHP Mess Detector工具,但我发现它们的规则都不适合这种特殊情况。
我想知道是否有一种工具(例如静态代码分析工具)能够报告我是否忘记检查返回值是否具有特定值。
php - PHP Mess Detector 给出误报
我正在使用一个开源项目,并认为使用phpmd实现自动代码修订是个好主意。
它向我展示了许多我已经修复的编码错误。但是其中一个让我很好奇。
考虑以下方法:
在这里,phpmd 说Else 从来没有必要
...永远不需要带有 else 分支的 if 表达式。您可以以不需要 else 的方式重写条件,并且代码变得更易于阅读。...
is_dir
只要给定路径是文件或根本不存在,就会返回 false,因此,在我看来,此测试根本无效。
有没有办法解决它,或者可能只是忽略这样的情况?
laravel - laravel 需要解释避免使用静态访问
我想更深入地了解有关使用静态方法的知识。我正在为我的应用程序使用 laravel 5.2 框架。
在我的应用程序中,我主要使用静态函数例如,我有模型类名称,如 post,方法名称是 get_post(),只有当我错过 laravel 中的静态关键字时,它才声明为静态,它会引发错误
在我的控制器中,我将调用此方法
我怎样才能避免将此方法称为静态方法?根据PHPMD 1.4.0 规则
请任何人解释清楚。
php - 了解php静态代码分析结果
我需要一个建议。找不到任何关于静态代码分析结果的信息。例如,我使用 phploc,并生成报告。但我不知道这是一个好结果还是一个坏结果。据我了解,我不会喜欢报告的实用程序必须相同。看到结果后,你可以解决坏代码与否。
我在哪里可以看到有关此结果中所有行的信息?
感谢帮助!
我发现的所有内容是:最大方法复杂度不得大于 10。 CyclomaticComplexity - 1-4 低 - 5-7 表示中等复杂度 - 8-10 表示高复杂度 - 11+ 非常高复杂度。
php - PHPMD 不能带参数运行
我一直在尝试将 phpmd 配置为与 PhpStorm 一起使用,但我被困在这里。这是我遇到的错误:
PHP Mess Detector
phpmd:无法正确运行带有参数的工具:
C:/Users/me/AppData/Local/Temp/___18.tmp/folder/myclass.php
xml codesize,controversial,design,naming,unusedcode
可能的工具进程挂起5秒后。
我在 Windows 上使用 PhpStorm。奇怪的是,当我这样做时,它似乎会运行Code > Inspect Code
,只是没有进行现场检查。事情是我的路径不是这个,我的文件位于C:/Users/Code/myapp
.
谁能帮我解决这个错误?
sublimetext3 - SublimeLinter:模块 phpcs 和 phpmd 不工作
在Sublime Text 3
我已经通过Package Manager
以下软件包安装:
- SublimeLinter
- SublimeLinter-phpmd
- SublimeLinter-phpcs
- 和其他几个..
问题是两者phpmd
都没有phpcs
工作。在 ST3 中打开php
文件然后单击:ctrl
和 ` 我得到以下调试信息:
我对这两行特别感兴趣:
- SublimeLinter:警告:phpcs 已停用,无法找到“ phpcs ”
- SublimeLinter:警告:phpmd 已停用,无法找到“ phpmd ”
我试图解决这个问题的是编辑用户配置文件:
Sublime text 3: Preferences -> package settings -> sublime linter-> settings - user
然后添加cmd
如下密钥:
正如您所猜到的 - 这并没有解决问题。我还尝试在末尾写不带 / 的路径,并尝试使用 \ 分隔符而不是 /。而且我还尝试直接指定 PFAM 文件。并且还尝试使用 ${project} 变量而不是整个 C:/ 路径。ST3 重启后我仍然收到警告。
我的另一个问题是 - 如何在调试窗口中输出“${project}”目录?因为我不确定它是否设置正确,所以我想对其进行测试。
更多信息:
Sublime 项目目录为:C:\xampp\htdocs\web\test.sublime-project
这是 phpmd
和phpcs
安装:
- "C:\xampp\htdocs\web\vendor\bin\phpcs\phpcbf.phar"
- "C:\xampp\htdocs\web\vendor\bin\phpcs\phpcs.phar"
- "C:\xampp\htdocs\web\vendor\bin\phpmd\phpmd.phar"
编辑:
好像我做错了。我在composer.json
项目目录中添加了以下内容:
使用命令安装所有内容后composer install
- 我vendor
为我创建了包含大量目录的文件夹,包括该bin
文件夹。它现在拥有所有必要的文件,但我仍然遇到同样的错误。由于某种原因找不到模块。
php - PHPMD - 检查重复的代码
我刚刚发现了 PHPMD 工具,我注意到它真的很有用,问题是我阅读了有关创建自定义规则和东西的文档,但它只是谈论使用 PHPDepend 的软件指标。
我想知道是否可以实施特定规则来检查重复代码?
我注意到我也可以在自定义规则中使用特定节点的抽象语法树,但这可能对我没有多大帮助,对吧?
因为要检查重复的代码,我需要比较几个不同的函数/方法节点,并且每个节点都调用一次 apply 方法?
我如何扩展 PHPMD 来实现这样的深度代码分析?我想远远超出软件指标..
谢谢!
php - 使用 extract() 时的显式变量声明
我有以下片段:
此代码完美运行(此处为完整源代码)。但是,我想确保在旅途中遵循一些好的做法。我现在收到 [一些 CodeClimate 警告] (PHPMD)( https://codeclimate.com/github/timegridio/timegrid/app/Listeners/SendBookingNotification.php ):
- 避免使用未使用的局部变量,例如“$locale”。
- 避免使用未使用的局部变量,例如“$timezone”。
- 避免使用未使用的局部变量,例如“$template”。
- 避免使用未使用的局部变量,例如“$subject”。
- 避免使用未使用的局部变量,例如“$header”。
- 避免使用未使用的局部变量,例如“$params”。
哪些是优雅的方法?
list()
我应该用或类似的东西明确声明变量吗?
提前致谢
php - PHPMD忽略规则集
我在phpmd.xml
文件中设置了这个规则:
但是这个规则被忽略了,我仍然得到这个错误:
/var/www/html/tests/Model/AdvertTest.php:18 The class AdvertTest has 1026 lines of code. Current threshold is 1000. Avoid really long classes.
知道为什么 phpmd 不阅读此规则。实际上,修复它的唯一方法是在类的顶部添加抑制错误。
更多信息:我在 MAC 上运行 phpmd,使用 Docker 使用以下命令:
docker-compose exec php sh -c "./vendor/bin/phpmd ./tests text phpmd.test.xml"
完整的 XML:PHP Mess Detector 规则集
php - PHPCS / PHPMD:是否有 PHP Code Sniffer / Mess Detector 方法来确保有 docblocks?
有没有办法可以使用 PHP Code Sniffer 和/或 PHP Mess Detector 来检测我的类/属性/方法是否有正确的文档块?例如:
上面的例子应该引发危险信号。但是,以下示例应该通过:
如果文档块正确(如果返回类型与返回的内容匹配),我对每个定义不感兴趣,我的意思是:如果它也这样做会很好,但我要采取的第一步是确保存在文档块。