exakat.1.7.6 Review

exakat.1.7.6提供了一个新的报告,可配置PHP-CS-Fixer并在代码中自动修复。这意味着在良好的审计之后,可以系统地更新和清除下一个审计的所有问题的代码。我们还引入了一个探测器,用于PHP覆盖函数,array_merge()使用eylipsis和新的收藏夹:捕获的异常变量。代码只能向后理解;但exakat 1.7.6审查必须读取。
使用PHP-CS-FIXER删除快速问题
这 PHP编码标准修订程序(PHP CS定影器) 工具修复您的代码以遵循标准。其主要目标是在PHP代码中进行自动化更新,以遵循编码标准。例如,确保汇位被声明 array
or with []
,但不是两者。 PHP-CS-FIXER附带定义的编码标准,如 PSR-1, PSR-2.
PHP-CS-FIXER还包括微验光:例如,更换 is_null($var)
with $var === null
更快,因为运营商比函数调用更快。它也是一种微优化,因为性能增益是几微秒:除非这是循环,否则效果将很小。
exakat能够根据上次审计生成PHP-CS-Fixer配置文件,该文件将自动解决问题。由于许多PHP-CS-FIXER与exakat共享,因此exakat发现的问题可以通过PHP-CS定影器自动固定。
以下是修复Code en Masse的操作:
- 运行exakat审计。确保规则集
Phpcsfixer
包含在配置中,in config / exakat.ini文件或命令行中--format Phpcsfixer
option with theproject
command. - 获取配置文件:
php exakat.phar report -p <project> -format Phpcsfixer
。生成的文件是projects/<project>/php_cs.php
. - 生成的文件可能是这样的:
<?php $finder = PhpCsFixer\Finder::create() ->in('.') // Change this to your code's path ->name('*.php'); return PhpCsFixer\Config::create() ->setRules( array ( 'no_short_bool_cast' => true, 'is_null' => true, 'function_to_constant' => true, 'elseif' => true, 'dir_constant' => true, 'combine_nested_dirname' => true, 'combine_consecutive_issets' => true, 'combine_consecutive_unsets' => true, 'logical_operators' => true, 'no_unset_on_property' => true, ) ) ->setFinder($finder);
- 在代码中保存该文件,在名称下
.php_cs
. - 跑步
php vendor/bin/php-cs-fixer fix --dry-run
要检查将更新多少代码 - 跑步
php vendor/bin/php-cs-fixer fix
实际修复代码 - 承诺您的VCS
- 运行一个新的exakat审计:这些问题已经消失了!
小心一词:与自动更新的任何工具一样,始终在提交之前查看PHP-CS-Fixer的修复程序。此外,运行您的测试,以确保代码仍在预期工作。
PHP覆盖函数
exakat报告了PHP覆盖函数。覆盖函数是本机PHP函数,具有自己的自定义定义。这发生在名称空间中。例如 :
<?php namespace { // displays a path echo dirname('/path/to/file'); } namespace Mine { function dirname() { return __METHOD__; } // displays a method name echo dirname(); } ?>
第一个呼叫dirname是php本机舞蹈。对DirName的第二个调用嵌套在自定义命名空间中,并导致本地姓名函数,具有非常不同的行为。
只要没有妄语的定义被添加到 Mine
命名空间,PHP回退到全局空间并使用本机版本。当函数的命名定义可用时,那么语法就不会’T更改,但本机函数已连接到另一个定义。这可能导致混淆。
PHP覆盖函数在大使报告的AppInfo部分中报告,以便警告审核员这些功能正在代码中使用。它没有作为一个问题报告。
array_merge.()和省略号
array_merge.()是一个强大的功能,将一个任意数组列表合并到一个。
<?php $arrays = [[1,2], [3,4,5], [6]]; $final = array_merge(...$arrays); // $final contains [1,2,3,4,5,6]; ?>
$arrays
包含一个数组列表。由于省略省号运算符,它们被扩展为单独的参数时,请访问extripsis运算符: ...
.
使用 ...
and array合并许多数组时,Merge()是一个重要的性能收益。每个调用数组merge()使其为新数组分配内存,包含所有参数。因此,只有一个呼叫,也很重要,也很重要。阅读更多 循环中没有array_merge() rule.
其中一个局限性 ...
is that it returns null
当数组为空时。
<?php $arrays = []; $final = array_merge(...$arrays); //PHP Warning: array_merge() expects at least 1 parameter, 0 given in Standard input code on line 3 ?>
空()阵列导致警告会污染日志。另一方面,Array_Merge()能够处理唯一的空数组:它只是返回该空数组。
解决方案是在使用之前检查阵列数组的内容。这可以用if /那条条件完成,或者通过使用空积分 ??
操作员,结合 ...
.
<?php $arrays = []; $final = array_merge(...$arrays ?? [[]] ); // nested arrays ?>
新的最爱:抓住了异常
抓住了例外 catch
条款。从手册中取出,每个人都使用 $e
作为陷入困境的例外的名称。虽然没有命名该变量的公约,但可以清单使用的各种名称是有趣的。

在名称中,捕获的变量可能是 $e
, $oExcept
, $oE
, $httpException
, $ae
, $error
, $a
, $exception
, $except
, $ex
, $e2
, $zhce
, $exc
, $nva
, $re
, $t
, ….
每周审核:2019年,周#17
exakat包括A.‘weekly’报告:此报告采用五项分析为构建。这意味着短暂的审计报告,几乎没有问题审查。读取它们并不是很多,并在代码中查看它们。 PHP社区中的每个人都可以专注于一个经典的编码问题并解决它。谈谈周围的每周审计:你’LL找到面临同样挑战的程序员。
获得‘weekly’审核,运行审计,请求‘Weekly’ report.
# Init the project (skip when it is already done) php exakat.phar init -p <yourproject> -R //github.com/Seldaek/monolog.git -git # Run the project (skip when it is already done) php exakat.phar project -p <yourproject> # Export the weekly project (every monday) php exakat.phar report -p <yourproject> -format Weekly # Open projects/<yourproject>/weekly/index.html in your browser
每周,您可以在此找到5个新分析,以便在您的代码中审查。事实上,当您的代码干净时,您也可以快速查看即将到来的
每周 recommendations for PHP code review : 2019, week 2019-17
- 带有奇怪空间的字符串 :不可见的空间可能会误认为是正常空间。
- 否则,如果与elsefif相反 :始终使用elseif而不是别的,如果。
- 多种类型的变量 :避免使用不同类型的数据使用相同的变量。
- 已经父母界面了 :相同的界面由一个类和一个孩子实现。
- 具有相同名称的类,界面或特征 :以下名称同时使用类,接口或特征。
快乐的PHP代码评论
所有352个分析仪都介绍在文档中,包括盛大: 如果有相同的条件 :具有相同条件的连续if /然后结构可以合并或者具有变化的条件之一。
它是一个常见的错误,发现了44%的源代码。
您可以查看图库中的所有exakat报告: exakat画廊.
下载exakat.io,安装它 Docker.,升级它‘exakat.phar升级-u’ and like us on GitHub..