exakat.1.2.1 review : Fu Yi

exakat.1.2.1 review

exakat.1.2.1带来了几个新分析,并提高了速度,并改善了并发。分析现在建议简化Chr()呼叫,错误增量运算符并降低表达式的复杂性。收藏夹报告显示属性声明样式。因此,在没有过渡的情况下,这里是exakat 1.2.1审查。

最快的exakat版本

在exakat的核心是Gremlin Server,一个与Gremlin遍历语言一起运行的图表数据库。这是在下载exakat时必须安装的数据库。数据库处理所有查询,并且exakat同时处理多个查询。这意味着充分利用现代架构,报告结果更快。

现在,代码已稳定,我们正在生产中监控。我们现在对这种情况感到满意,并且在迁移到下一个架构更改之前,正在完成最后一个错误。

误认为增量操作员

Here is one pattern that is hard to detect with a proof-read : $a = +$b;. The second + has been forgotten. It turns the increment operator into a simple + operator, which has no impact here.

这是一个日益增长的粉碎族的最小兄弟,往往会花费大量的时间和挫折感。它们非常罕见,频繁地击中我们的速度不到1%,但是当他们这样做时,你可以一定要学习新的滥用行为。这是整个家庭的简短演示:

  • foreach($a as $b) ; ++$c; : Note the extra ;
  • foreach($a as $b->b) ++$c; : Note the -> instead of => ;
  • $array = ['a', 'b'. 'c', 'd', ]; : Note the . inside
  • if ($a = 1) { ... :虽然,IFFectations有效,主要使用得很好
  • include 'a' or die(); : that won’t include a boolean
  • $a = $b and $c : $a is $b, not $b and $c;

所有这些错误都已在实际代码中找到(虽然,名称已更改以保护罪魁祸首)。你知道其他令人沮丧的代码错字吗?在Twitter或GitHub上删除笔记,我们’LL将其添加到exakat编码参考中!这是静态分析普照的地方:即使是罕见的时候,也是如此大写的经验。

太多的原生电话

它们越长,表达越难读取。虽然我们努力保持我们的方法短暂,但它恰好有些表达狂野并大幅增长。

例如,考虑连接。最多七个变量,它们可能仍然可读。您甚至可以找到甚至可以让它们易读的方法,尽管它可能不是每个人。

另一方面,当相同大小的连接包括多个PHP本机调用时,这使得读取表达式非常困难。拿着它

@unlink(getcwd( ) . substr($fileFrom, strlen($unzip_dir), strlen($fileFrom)))

它仅包括5个PHP本机呼叫: 解开, Substr., getcwd.strlen. (两次)。虽然,那些积累使得整个表达难以阅读,并且处理了很少的错误。

首次检查后,似乎大多数表达式最多包含4个PHP本机函数调用。使用超过5个本机函数调用的表达越来越少,并且可以安全地报告。还似乎很多人都是打印数据,如本代码:

@print (preg_replace('#/\*\s*\*/\s*#', '', str_replace('url(\'\')', 'none', str_replace('url("")', 'none', preg_replace('#\{\$[^\}]*\}#', '', file_get_contents($FILE_BASE . '/themes/default/css/global.css'))))))

exakat现在报告这些表达,以帮助可读性。

简化CHR()呼叫

It has came to our attention that many applications are using chr(123) calls to create special characters while keeping the code compatible with varying encoding. This is the case, for example, for tabulation chr(9). They often appear in filtering functions to remove them.

现在,PHP有很多方法可以直接在字符串内指定字符,具有字符序列。那些被编译成OPCODES。它们的用法可防止调用CHR()函数。 CHR()仅在呼叫时间执行,并且应该保留用于动态字符,具有变量或其他类型的容器。

这是PHP中的剩余字符序列,应用于‘水平制表 ’.

  • “\t” : special sequence
  • “\011” : in octal
  • “\u{9}”:在Unicode CodePoint中
  • “\x9”; in hexadecimal

快乐的PHP代码评论

所有344个分析仪都介绍在文档中,包括同意的 Substr比较失败:始终检查提取的字符串必须具有比较字符串的大小。它’s a general PHP BUG,评分为11% :它实际上导致死者代码。

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

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