热保护之神:Exakat 1.0.8审查
exakat 1.0.8评论

exakat.1.0.8 review

exakat.1.0.8在Twitter上的#PhpAdvent 2017活动期间发布。每天,有一个新的提示如何更好地制作PHP代码。为此,exakat不断提高,我们对此新版本有丰富的新分析和错误修复。 exakat医生报告java_home和java_options进行调整安装。现在分析您是否通过版本覆盖了Symfony和Wordpress未定义的类,用于潜在的错误连接以及操作员两侧的相同变量。时间详细介绍exakat 1.0.8审查。

exakat医生报告java_home和java_options

exakat是用gremlin-server作为后端构建的。令牌加载在图形数据库中,各种树木和图表都有Gremlin遍历语言查询。 Gremlin Server使用Java构建。有两个重要的环境变量要知道。

java. _home是Java安装的路径。默认情况下,它可能是空的,它应该正常工作。但是,由于其他工具使用Java,或者使用版​​本9即将到来,可以引用另一个版本。因此,只需使用此环境变量来配置正确的Java即可使用。 exakat在Java 8上进行了测试。它可以在Java 7上工作,但它不会再监视。

Java_Options是用于将内存分配给Gremlin的环境变量。 Gremlin喜欢记忆力,建议给它一些房间。

<?php
export JAVA_OPTION="-Xms32m -Xmx6512m"
?>

XMX设置Java可能使用的最大RAM量。 XMS是RAM的起始量。默认情况下,Java使用32MB启动,512MB为限制。这已经足够了绝大多数审计。

当您的代码库到达超过500个文件时,将XMX升级到几个GB之外是安全的。

最后,作为一个提醒,唐’忘记将CLI PHP的Memory_Limit设置为-1,所以它赢了’在构建数据库时被中断。

Symfony和WordPress版本兼容性

exakat已经有Zend Framework和CakePhp的版本兼容性。我们将这些分析的支持扩展到Symfony和WordPress。对于每个中间版本,从Symfony 2.8到4.0,以及WordPress 4.0至4.9,Exakat报告了同一框架的类,特征和接口,Don’t属于提到的版本。

例如,您可以识别下面的两个类。两者都来自Symfony,但第一个是一个旧的建设者,而异常在Symfony 4中有效。

<?php
new Symfony\Component\Validator\Violation\\LegacyConstraintViolationBuilder( );

throw new Symfony\Component\Filesystem\Exception\InvalidArgumentException( );

?>

Symfony船只约有1800级,特征或界面,并且可能难以跟上。通过exakat,现在可以发现灭绝的每个结构,并帮助迁移。

这已经是Zend框架,蛋糕和其他几个框架的情况,就像苗条,yii和drupal一样。如果您想要在此列出的您最喜欢的框架,只是平安我们。

报告错误的标量型

本星期, BENOIT PREMUIER. 报道 这个有趣的php错误消息:

PHP Fatal error: Uncaught TypeError: Return value of foo() must be an instance of integer, integer returned

这是由于错误消息和类型之间的有趣差异:右PHP标量型提示是INT,而不是整数。你可能很好地说出一堂课‘integer’然后,将其用作返回类型。

您也可能只是犯错,并混淆整数和int。

exakat. 现在有一个新的分析,报告int和整数混乱。字符串非常安全,但实际/漂浮/双倍是,BOOL / BOOLEAN既有风险。

在执行期间,此错误将易于检测:致命错误杀死执行。即使在执行脚本之前,Exakat尝试更难检测到错误。

此外,这种错误是一个经典的人类错误:在执行单元测试之前,它可能会修复并提交,因为这种简单的修复应该在没有问题的情况下通过。我们可以在遗留代码中找到某种错误,其中包含过去几年从未编译的文件。

Merciàkenoit!

阵列中可疑串联

阵列通常用于构建数据列表。这是阶级突然似乎可疑的地方。

<?php
// This concatenation is suspicious
$letters = array('a', 'b', 'c'. 'd', 'e');

// This real number is suspicious
$letters = array(1, 2, 3.4, 5);

?>

在这里,点很容易被逗号弄错(。和)。 PHP和IDE赢了’t遵循问题,因为都是有效的语法。 3.4和‘c’.’d’有效:实际上,他们甚至可能想要。读取代码时,才能产生差异。

为了减少可能的假阳性的数量,我们专注于文字阵列:仅包含字面值的阵列,在使用的类型中具有高水平的一致性。

这看起来像一个罕见的错误:我不’T期望超过几个错误。我们已经开始在我们的1700个项目语料库上运行此错误,并且在下一个史诗报告中看到此分析的实际错误水平将是有趣的(exakat.PHP Index of Coding )。

事实上,知道PHP是在应用程序中存储和加载数据的最有效的方法,比读取和解码JSON或INI更快,应用程序具有字符字体,汉语拼音或国家数据库,包括手动编辑部分是非常常见的。我们’请参阅即将到来的几个月在未来几个月内展开。

快乐的PHP代码评论

exakat.1.0.8获得了几个人的贡献,包括Benoit Viguier,Philippe Gamache,FrédéricMagery。非常感谢所有人的见解。我们一直在寻找新的方法来审查PHP代码和报告代码的味道,因此可以在Twitter上自由地平,或加入Slack频道向我们发送挑战。

所有320多个分析仪都介绍在文档中,包括永久性‘使用FunctionCall.‘,通过调用每个循环来减慢任何代码。下载exakat on exakat.io,升级它‘exakat.phar升级-u’像我们在Github上一样: //github.com/exakat/exakat.