一个用于安全,一个用于表演,有几个用于覆盖和一个新库存! Exakat 1.9.6带来了各种新分析和报告:使用MB_SUBSTR()的性能,没有TLS 1.0的安全性,更好地覆盖定义,以及重复文字的库存。

我们正在进化以寻找意义,但最终生活只有1.9.6的审查。

避免MB_SUBSTR()在循环中

mb_substr()是substr()的多字节表达式。考虑到编码,它从字符串中提取一组字符。 

substr()适用于字节,因此找到第n个字节是访问字符串中的第n个位置的问题。 MB.substr()适用于多字节字符串,并且需要解释所有字符,直到第n个位置开始提取过程。这意味着每个MBSubstr()调用在字符串开头开始其计算,并将其途中的方式转换为请求的位置。每一次。 

<?php

$size = floor(strlen($string) / 2);
for($i = 0; $i < $size; ++$i) {
    foo(substr($string, $i, 2));
}

// Very slow upgrade to multibytes
$size = floor(mb_strlen($string) / 2);
for($i = 0; $i < $size; ++$i) {
    foo(mb_substr($string, $i, 2));
}

?>

为避免字符串的常量倒带,解决方案是将字符串拆分一次,然后循环结果。在这里,Preg.比赛所有这些都使用 u 选项,对于Unicode,以及捕获实际字符的双点。

<?php

$chunks = preg_match_all('/../u', $string);
foreach($chunks as $c) {
    foo($c);
}

// Same as above, with preg_split, for chars only
$chars = preg_split('//u', $str, -1, PREG_SPLIT_NO_EMPTY);

?>

这种性能分析受到启发 优化:如何使我的PHP代码更快地运行100倍.

没有更多ssl和tlsv1.0

SSL和TLS是用于保护通信的加密协议。大致,它们已经从SSL版本1.0到3.0演变为3.0,然后从TLS版本1.0到1.3演变。 

如今推荐的版本是TLS版本1.3。现在已弃用所有SSL版本和TLS版本1.0。 TLS版本1.1即将推出。 

PHP支持两个不同的位置:文件系统的传输层(其中 FOPEN()文件得到内容()等等)和 卷曲 extension, with curl_setopt()

exakat.报告所有SSL版本和TLS 1.0。我们’LL在明年加入TLS 1.1。同时,将代码更新为TLS 1.3。

更好的定义覆盖

定义,a.k.a定义是链接结构及其用法图中的内部链接。例如,它链接函数和功能函数,方法和方法调用,具有恒定使用的常量定义。

将呼叫与其定义链接主要是在PHP中隐含,并在编码器中隐含’心灵。不需要使用变量定义,并且能够为类或功能做同样的事情(TLTR:仅开玩笑,不可能)。

使用1.9.6版,将一些新链接添加到当前的集合链接中:特别是,魔术方法现在链接到 __call and __callStatic 方法,当方法调用的对象本身是一个定义时。这是如此 $this例如,键入暗示的参数。 

此外,包括分配的括号现在更好地检测到,就像这样: 

<?php

// calling foo method on class x
(new x)->foo();

// calling foo method on class x, storing object in $object
// This is valid syntax, but also reported as 'Buried assignation'.
($object = new x)->foo();

?>

重复文字库存

重复的文字是代码的经典:为数组索引,信号名称或特殊状态选择值。由于它被添加到代码中,它将开始为文字,然后,通过使用和定义来跨代码传播。 

升级这个文字的时间是出现的,出现了一个问题:在代码中无法找到它们。并且,更不用说这,这种文字也被近距离和遥远的表兄弟增强了。他们确实存在数百人遍布这些代码。从哪儿开始? 

重复的文字库存是收集整数,实际和字符串的文字值的新库存。要限制误报,则为此库存创建了一个参数: minDuplicate starts at 15. 

虽然这似乎很高,但这是一个很好的开始。它提取代码中最重复的文字,并提供所需返工程度的第一个想法。从那里,建议将这些文字转化为常量,全球或课程。这是一个很长的过程,有一个警告:这种重复的文字通常以不同的方式使用,同时移动到常数力迫使澄清。 

每周审核:2019年,周#38

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

快乐的PHP代码评论 

所有384个分析仪都介绍在文档中,包括皇家: 从未使用过属性:从未使用的属性。

这是一个调整的虫子,有超过72%的机会出现。 

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

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