exakat 0.11.4评论
exakat 0.11.4评论

exakat 0.11.4评论

exakat 0.11.4出来,在欧洲代码期间:在弗罗茨瓦夫和华沙遇见我们!此版本具有两个新分析仪:‘只能通过引用传递变量’PHP在棉绒时部分处理,静态分析进一步变得很多。此外,当未使用它们的结果时,某些功能可能会省略返回:现在自动发现它们。最后,exakat有一个名为的新报告‘Codeflower’以及经典大使报告的许多更新。

只能通过引用传递变量

本杰明(@benjamincremer.)呼叫Twitter对讨论令人讨厌的错误:只能通过引用传递变量。调用函数或具有逐引用参数的方法时,此类参数必须是有效的容器:变量,属性,静态属性或数组元素。

<?php
function foo(&$f) {}
foo($x); // valid
foo(3); // invalid
?>

PHP实际上是Lint这样的代码:在此脚本上应用PHP -L生成以下错误:PHP致命错误:只有变量可以通过引用传递。诀窍是函数很少使用它们定义的位置:函数在一个文件中定义,并在许多其他文件中调用。在这种情况下,PHP省略了暗示时间的检查,并稍后停止执行。几个Linting Checks表现相同:当它们处于同一文件时,无法解析相互扩展的类,但可以通过在单独的文件中进行。
因此,此检查现在由Exakat执行。涵盖了功能和静态功能,而省略方法调用。报告了PHP函数,当已知使用引用参数时,也会报告(例如 种类 ());

未使用返回的函数

有时,功能或方法不’需要返回任何东西。他们起火并忘记了一块代码,或一些句法糖。在这种情况下,它们被单独调用,并且它们的结果被忽略。然后,他们可以在其代码中省略return关键字,除非它是短的出口。
exakat检查所有功能’使用函数,并且当函数的结果未存储或直接使用时,报告可能省略return关键字的函数。

<?php
function setIni($setting, $value) {
if ($setting == 'default_charset') {
$res = ini_set('default_charset', $value) ;
if ($res === false) {
throw Exception('Couldn\'t set default_charset') ;
}
} else {
return ;
}
return $res ;
}

setIni('default_charset', 'UTF-8') ;
// more code
setIni('default_charset', 'Latin1') ;
?>

在此示例中,setini()实际上返回值,但总是忽略它们。更新此情况可能是一个好主意:要么删除返回,或处理它。

守则

一个新的报告是构建,代码命名‘Code flower’。该报告基于‘守则‘来自Francois Zaninotto,它是开源的。它用于呈现类似树状的数据,例如文件层次结构。我们有几个从分析中提取的数据集,可以作为树呈现,因此这是一个伟大的化。
目前,该报告有三种口味:

  • 命名空间:这介绍了从根\(全局命名空间)开始的所有命名空间。它包括他们的类,特征和界面。 LONG序列的名称空间显示了代码的深度,节点周围的鲜花显示了命名空间是多么拥挤。
  • 夹杂物:这是一个实验性可视化,当一个人包括另一个时,文件彼此链接。根节点不是文件:它只是出发点。用包含关键字(和相似)检测夹杂物。这是非常早期的测试,因为夹杂物是网络,而不是树。
  • 类扩展:此可视化介绍沿着组织组织中的类‘extends’关键词。根不是班级:它’孩子的孩子都是延伸的所有课程。然后,遵循所有扩展名:链接的长链意味着最后一类是几个遗产的结果,而花朵则显示大量扩展的类。

我们仍在测试此新报告样式:它将在即将到来的版本中介绍更多,因为层次结构是代码中数据的经典表示。

大使报告更新

exakat中最完整的报告,大使报告,又换了另一轮更新:添加了几个内部链接,其中添加了文档和文件显示。

快乐的PHP代码评论

exakat 0.11.4一直对报告增加更多的见解。本周,我们有来自社区的帮助:感谢Benjamin和Francois为您的贡献:如果没有您,我们永远不会这样做!您也可以通过建议在代码中找到问题或可以帮助在代码上施加最佳灯光的vizualation来帮助制作PHP代码。
所有320多个分析仪都介绍在文档中,包括着名‘获取数组中的最后一个元素‘ that suggests using 数数 () 或者 结尾 ()达到数组的最后一个元素。下载exakat on exakat.io,升级它‘exakat.phar升级-u’像我们在Github上一样: //github.com/exakat/exakat.