
exakat.1.6.5 Review
exakat 1.6.5评论随着很多扩展和一些新分析。特别是,我们为PCOV和Weastref的支持增加了两个有趣的PECL扩展;新的分析报告可作为条件的变量,以及初始化为字符串(DUH!)的阵列;最后,大使报告和几个先前的分析延长,涵盖了比以前更多的情况。到exakat 1.6.5审查,超越!
Weastref和PCOV.
佩戴物都是一个 PECL Extension. A. 目前的RFC.。此扩展名为 乔沃特金斯。弱引用的目标是允许PHP引擎解开这些引用,以防它需要释放内存。这意味着对象在执行期间可能会消失。
这对于缓存策略非常有用:而不是在应用程序的生命周期期间累积缓存,而某些对象被标记为优先级未启动。 薄弱的参考文献 将可用,以及传统的参考。
PCOV. is ‘a self contained CODECOVERAGE. PHP7的兼容驱动程序′。它适用于PHPUnit,并提供有关代码行执行和控制流的急需信息。 PHPUNIT使用它们来建立测试套件的代码覆盖范围。
exakat现在报道了两个延伸。建议防止PCOV达到生产,而Weastref不应该被遗忘。
没有变量是一个条件
此分析斑点变量作为原始条件。这是一个例子:
<?php if ($error) { echo, 'Error : '.$error; } ?>
In this situation, it is easy to read that the condition on the $error
多变的 is actually a test on its content. When no error was spotted, then $error
is probably empty, and thus, the application skips the display. When the error is explicit, then, the variable is filled with a non-false value, and this leads to the display.
在隐藏警告的环境中,可以通过方式测试变量的仅存在。
一般来说,建议使情况明确。在这里,我们可以与空字符串进行显式比较,或者如果变量可能未定义,则对ISSET()的调用。
<?php if (isset($error)) { echo 'Error : '.$error; } ?>
If $error
is always set, then a comparison with an explicit value carries more meaning than a auto-cast comparison to false. For example:
<?php if ($error !== '') { echo 'Error : '.$error; } // same as above, with a constants const NO_ERROR = ''; if ($error !== NO_ERROR) { echo 'Error : '.$error; } ?>
最后一行甚至更好:代码完全可读,常量名称充当可读性和可执行的注释。它甚至可以使用其他值进行更新的附加值,而无需更改代码。
作为一般规则,建议推荐避免变量作为条件,即使它应该只包含布尔值:使比较明确,可维护。
PHP 7.1没有’从字符串到数组t transtype
直到PHP 7.1,可以使用空字符串初始化变量,稍后将其用作数组。 PHP将立即在数组中进行键入值。看到它的行动 3v4l.org. .
<?php $a = ''; $a[3] = 4; var_dump($a); // PHP 7.0 and older : // string(4) " 4" // PHP 7.1 and more recent /* array(1) { [3]=> int(4) } */ ?>
虽然用字符串初始化变量并将其用作阵列并不是很聪明,但这是一个旧的习惯,在许多开发人员中占有很好的旧习惯’代码:初始化变量最通用的方式,忘记它是使用空字符串。这跳过了‘Undefined variable’错误,但尚未提供阵列和字符串。
PHP 7.1已移动以跳过沉默式铸造。特别是,它会发出与字符串索引的非致命错误,(‘非法字符串偏移’)但在数组中设置0。
exakat. 现在报告初始化为字符串的变量,但用作阵列,以便PHP 7.1的兼容性报告中。
每周审计:2019,周#07
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 : 2018, week 2019-06
- 时间戳差异 :
time()
andmicrotime()
shouldn’用于计算持续时间。 - 父母第一 : When calling parent constructor, always put it first in the
__construct
method. - 局部变量太多了 :在该方法中发现了太多局部变量。
- 可以用 谜语 : 采用 谜语 常量访问当前文件’s parent directory.
快乐的PHP代码评论
所有354个分析仪都介绍在文档中,包括智能: 不匹配类型和默认:这是参数typehint和参数的默认值’t match.
这是一种罕见的虫子(3%),但它在出现时绝对挫伤了一些自我。
您可以查看图库中的所有exakat报告: exakat画廊.
下载exakat.io,安装它 Docker. ,升级它‘exakat.phar升级-u’ and like us on GitHub. .