exakat.1.7.9 Review

exakat.1.7.9正在带来各种更新和升级。首先,支持PHP 7.4正在增长,箭头函数和阵列中的传播运算符和FFI扩展。然后,我们延伸了嵌套的三元,以准备PHP 7.4’S非嵌套功能。最后,库存报告添加了包含清单,而大使升级全球库存。你’必须继续前进到Exakat 1.7.9点评! 

exakat.1.7.9 review

支持PHP 7.4语法

PHP 7.4 仍然是几个月之外的(2019年12月),但是 升级列表建议 已经可用。特别是,PHP 7.4将引入新的语法,例如箭头函数并以阵列传播。 exakat已经支持这些新功能! 

箭头功能

箭头功能 是一个新的和较短的方式来写一个封闭。 Closure已经是函数的较小版本,没有名称,并且具有更多上下文集成。箭头函数是一个较短的版本。 

从RFC中获取,这里是相同的代码,用两种不同的版本编写: 

<?php    
function array_values_from_keys($arr, $keys) {      
   return array_map(function ($x) use ($arr) { return $arr[$x]; }, $keys); 
}
?>
<?php 
function array_values_from_keys($arr, $keys) {
     return array_map(fn($x) => $arr[$x], $keys);
}
?>

两个代码都将函数应用于数组 $arr,基于一组密钥提取特定的值集。请注意第二个语法如何更短。 

首先,PHP 7.4介绍了 fn 关键词。此关键字介绍了新的语法,有助于消除阵列和产量的代码,也取决于 => 操作员。这也意味着代码可以’t use fn 作为类或函数名称。这是检查的,它非常罕见。 

其次,没有卷曲括号,没有返回声明:双箭头后 =>,只有一个表达式。没有多个表达式的块没有空间。箭头函数用于需要重复或移动的短表达式。如果需要出现,可以添加更多的表达式,但目前并非如此。

箭头函数将削减锅炉板代码,并保持代码短。 

向exakat添加对箭头函数的支持。它现在能够编译和操作箭头函数,就像封闭和方法一样。发动机已通过箭头函数进行测试,并且升级分析以处理它们。 

传播运营商

又称variadic或exlipsis,扩展操作员将一系列数组变为不同的参数。 

<?php 
$array = [[1,2,3],[4,5,6],[7,8,9]]; $list = array_merge(...$array); 
?>

这里,  array_merge. 接受任意数量的论点,以及 ... 操作员从中传播元素 $array 数组进入不同的参数,导致一个呼叫中的所有元素的合并。这是一个很好的速度。 

奇怪的是, ... 阵列本身不允许运营商。虽然可以使用 array_merge. 要将多个数组组合成一个,它也可以有效地合并阵列以形成新的阵列。这是PHP 7.4的情况,因为  2019-05-13 (这是昨天,对于在未来读到这一点的人)。

<?php 
   $list = [...[1,2,3], ...[4,5,6], ...[7,8,9]]; 
?>

传播操作员已由Exakat引擎支持。实际上,它被解释就像在函数或方法调用中对传播运算符的任何其他调用一样。 exakat首先用php本身标记代码,因为php本身产生了致命错误,因此这些文件无法进行分析。 PHP 7.4现在接受它们,也是exakat。 

We’LL将来添加差价算子具体分析。 

FFI扩展

FFI扩展是 外函数界面。这是一个实验功能“允许加载共享库(.dll或.so),调用C函数和纯PHP中的C数据结构,而无需具有深入的Zend扩展API,而无需学习第三个“中间”语。”您可以在Anthony Ferrara上了解FFI的更多信息’s 一个php编译器,aka the ffi兔洞 blog post.

与PHP 7.4无关,  uuid. 密码 Zend Monitor. and  SVM ,对于支持向量机库,将扩展添加到受支持的扩展名列表中。不要将最后一个混淆  SVN.  extension. 

嵌套的Ternaries突然出现

嵌套的Ternaries在exakat和PHP中获得了一整容。 

首先,在exakat中,嵌套的三龙菊现在正在考虑括号。到目前为止,仅报告了直接嵌套的Ternaries,而现在也添加了在括号中写的那个。 

据报道,嵌套的三龙菊,有或没有括号,可用于可读性差。两者立即难以阅读,作者经历了6级三元怪物表达。 

<?php
// nested and unreadable  
$a = $b ? $c ? $d : $e : $f;

// nested, unreadable and parenthesed  
$a = $b ? ($c ? $d : $e) : $f;

?>

在PHP 7.4中,三元算子也在促进一个整容。由于几乎所有其他语言都有一个正确的关联三元运算符,因此在从一种语言到下一个语言切换时,它会令人困惑。由于它将通过从左到右切换先例来打破太多代码,因此任何模糊的三元运算符将以PHP弃用警告标记。

<?php   
$a = $b ? $c ? $d : $e : $f ? $g : $h ;

//PHP Deprecated:  Unparenthesized `a ? b : c ? d : e` is deprecated. Use either `(a ? b : c) ? d : e` or `a ? b : (c ? d : e)`   
?>

//注意变量名称缺少初始名称 $ :这可能是一种发展艺术品。 

并非每个嵌套的三元表达式都会被标记:只有一个模糊的,并且可能会产生比写入的结果不同。 

此功能向后兼容。简单地,在移动到PHP 7.4之前,代码需要更新。根据这一点 史诗(exakat php编码指数,12,2%的PHP代码必须升级。

包容性库存

exakat报告称 ‘Inventory’ 用两个新报告升级:包含列表和全局变量列表。

库存报告从代码中收集各种资产,并将其作为CSV文件传递。例如,您可以查看所有正则表达式或变量名称,聚集在同一个地方。

CSV格式使得将这些库存易于将这些库存导入另一个数据操作工具,例如打开的办公电子表格,以便在报告之前应用自己的转换。

包含列表

此列表收集所有包含所需的包含呼叫,包括一次要求曾经,他们的实际论点。第二列保存调用文件的名称。 

/tbl_select.php,"require_once ROOT_PATH . 'libraries/common.inc.php'" 
/tbl_select.php,"require_once ROOT_PATH . 'libraries/tbl_common.inc.php'"
 /error_report.php,"require_once ROOT_PATH . 'libraries/common.inc.php'"
 /db_multi_table_query.php,"require_once ROOT_PATH . 'libraries/common.inc.php'"

纳押在exakat有一些专用分析: 纳入错误的情况 and 缺少包括浮现在脑海中。 

然而,构建包含路径的规则可能是复杂的,并且猜测它们超出了exakat的范围。这是清单是一个伟大的开始:所有包含的夹杂容都已收集并在一个地方收集。添加您自己的魔力,并检查其中的任何包含是错误的。

全局变量

全局变量也被添加到库存系统中。它们也在大使报告中升级: 

全局现在按名称分组,因此您可以更好地查看其位置。在这里,我们可以发现大多数全局变量仅在一个文件中使用,这会降低传染性的风险。

然后,第二列表示全局的类型:它可能是其中一个‘implilcit’, ‘global’ or ‘$GLOBALS’,取决于原点。‘global’意味着该变量是明确声明的,$ Globals意味着它通过Supreglobal $ Globals访问它‘implicit’意味着它在全局空间中,它从未明确制作全局,尽管PHP将默认使其成为全局。 

如果读取变量,则下一列提及 R or modified W。这很有意思,因为这里使用的例子显示了一些全局变量,如 $children or $createMisc 写入并读取:这是最好的组合,因为它显示变量均分配和使用。然而,还有其他变量只读,例如 $productType。还有其他情况下拆分多个文件或仅编写的情况。 

通过如此概述全局变量,现在很容易查看它们,并开始删除它们,或将它们移动到其他存储位置。特别是,当全局用法跨多个文件传播时,这大多是有用的。

每周审核:2019,周#20

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

  • 父母第一 :调用父构造函数时,始终首先放入 __construct方法。
  • 第一串 :在应用一些转换之前,始终首先减少字符串。
  • 别名使用 :PHP手册建议避免职能别名。
  • 逻辑错误 :避免在长表达中的逻辑错误。
  • 使用foreach使用列表 :foreach()结构接受列表()作为盲密钥。

快乐的PHP代码评论 

所有352个分析仪都介绍在文档中,包括盛大: 可以使用str_repeat() :使用str. 重复()或strPAD()而不是制作循环。

它仍然是一个不寻常的建议(12%),但很高兴查看一个’S代码并用它升级它! 

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

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

[]