exakat.1.6.1 Review

这是2019年新年的exakat 1.6.1审查!新分析仪专注于array_key_exists()即将到来的速度增强,以及捕获preg_match()的捕获子模式。大使报告现在包括一个‘new issues’自上次审核以来,仅显示代码中最近发现的问题的部分。 exakat 1.6.1回来了!

array_key_exists()在PHP 7.4中获得速度提升

仍然有关于使用ISSET()或数组的问题 钥匙 exists. In particular, isset() is faster, but it also confuses null with the absence of value. array 钥匙 exists() is slower, but do find values that hold null. To solve the paradox, using both is often a good idea, performance-wise.

    
<?php

$foo = [123 => 456];

// This is sufficient and efficient since PHP 7.4 
if (array_search_key($foo[123])) {
     // do something 
}

// taking advantages of performances for PHP 7.4 and older 
if (isset($foo[123]) || array_search_key($foo[123])) {
     // do something 
}

?>

这是微量优化,对代码的测量和小的影响。 实现zend_array_key_exists opcode加快array_key_exists() .

PREG_MATCH()的部分结果

preg_match()将正则表达式应用于字符串,并在提供时报告第三个参数中的捕获子模式。这是检查字符串满足某种复杂格式的好方法,并在正则表达式成功时收集字符串的重要部分。

    
<?php

// displays a full array, from 0 to 2 preg_match('/(a)(b)?/', 'abc', $r);
print_r($r);

/*
Array (     [0] => ab
            [1] => a
            [2] => b )
*/
?>

诀窍是PREG_MATCH()跳过作为可选的子模式,它们在最后时。因此,所得到的阵列没有’T总是相同的指数:

    
<?php

// displays a partial array, from 0 to 1 preg_match('/(a)(b)?d/', 'adc', $r);
print_r($r);
/*
Array (     [0] => ad
            [1] => a )
*/
?>

这里的其中一个诀窍是确保正则表达式’T结束可选的子模式。这是通过在末尾添加伪永子模式来实现的。

    
<?php

// displays a partial array, from 0 to 1 preg_match('/(a)(b)?(d)/', 'adc', $r);
print_r($r);
/*
Array (     [0] => ad     
            [1] => a     
            [2] =>
            [3] => d )
*/
?>

exakat 1.6.1检测以可选的子模式结尾的正则表达式,并建议升级以避免丢失索引或半空返回数组。

专注于最新的代码问题

在里面‘Ambassador’报告,12月底增加了一个新部分:新问题。本节介绍了面位引擎的问题,如‘Issue’部分:它还将问题限制为自以前的审计以来是新的问题。只列出了新问题。

基于找到的文件,行和类型的文件,当前版本与上一个的差异。当一个‘$a+ 0′ is found on file ‘a.php’,在第33行,用于分析仪‘Structures/AddZero’,它只在此部分中显示在以前的审核中尚未提及相同的错误。

特别是,exakat会导致审计之间的线路变化:如果问题上的代码未被触及,但由于前一行的重构发生而被移动,则线路编号已更改。使用熟练的差异来自VCS,可以跟踪代码的演变,并计算旧线最终的位置。

专注于新问题是一个很好的过滤器,以减少要审查的问题次数。它给出了更短的结果,它也将注意力集中在新鲜的代码上,最近:这应该导致您更好地审核您的代码。

此功能是自动的,并不是’T需要任何安装。如果您已经在存储库上运行审核,则该部分将填写下一次更新。如果您运行新审核,则使用相同代码的较新版本的exakat,很可能‘new’部分将为空:没有代码更改,没有新问题。

每周审核:2019,周#02

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-02

快乐的PHP代码评论

所有352个分析仪都介绍在文档中,包括代表: 无用的全球 : Global are useless in two cases : with superglobals, like $_GET or $GLOBALS, and with variables that are not used.

这是一个常见的错误:23%的申请包括全球但唐’t use them.

您可以查看图库中的所有exakat报告: exakat画廊.

下载exakat.io,安装它 Docker. ,升级它‘exakat.phar升级-u’ and like us on GitHub. .