exakat.1.1.7 review

exakat 1.1.7和1.1.6本周审查。介绍了两份新报告:统计数据和拟合PHP版本。添加了几个新分析:建议使用数组充满键(),4个新的PHP扩展和一个TOCTOU经典问题。是时候走了1.1.7次审查了。

新统计数据和拟合PHP报告

exakat.1.1.7有两个新报告:统计数据和拟合PHP报告。

拟合PHP报告

此报告显示具有跨版本的兼容性的功能。例如,由于PHP 7.0,匿名类是有效的,并且在方法中定义具有相同名称的多个参数,因为PHP 7.0以来无效。

exakat在审计代码中找到了不兼容,并在单一报告中收集它们。它展示了代码的概述’S兼容性状态:两者都在于,不可能做什么。

有趣的是,有时不可能看到检测拟合PHP版本:当代码检查版本并决定包括适应性代码时,源最终包含与一个版本兼容的文件,以及与另一个版本兼容的文件。最终结果是代码的明显悖论不可用。

统计报告是从大使的旋转。它列出了代码中的许多元素,以及代码中的出现次数。例如,我们可以在这里看到 kliqqi.包括20个类和272个功能,但没有命名空间。

{
    "Summary": {
        "Namespaces": 0,
        "Classes": 20,
        "Interfaces": 0,
        "Trait": 0,
        "Functions": 272,
        "Variables": 25979,
        "Constants": 288
    },
    "Structures": {
        "Ifthen": 3354,
        "Else": 724,
        "Switch": 31,
        "Case": 181,
        "Default": 18,
        "Fallthrough": 0,
        "For": 62,
        "Foreach": 267,
        "While": 52,
        "Do..while": 0,
        "New": 270,
        "Clone": 0,
        "Class constant call": 0,
        "Method call": 3936,
        "Static method call": 6,
        "Properties usage": 0,
        "Static property": 0,
        "Throw": 3,
        "Try": 1,
        "Catch": 1,
        "Finally": 0,
        "Yield": 0,
        "Yield From": 0,
        "?  :": 156,
        "?: ": 4,
        "Variables constants": 0,
        "Variables variables": 15,
        "Variables functions": 7,
        "Variables classes": 0
    }
    ....</code></pre>
</div>
<pre><code class="language-none">

 

统计数据还包括结构,课程。 Stats提供有关代码结构和功能使用的信息。存储在提交之后也很棒,请在代码中查看进化。

统计报告在1.1.6中介绍,拟合PHP报告于1.1.7介绍。

最后,我们添加了一个‘All’格式,它带有当前的exakat版本的每个可用格式。这使得很多报道,在询问这个专业时要谨慎。另一方面,它是冲浪所有报告的好方法,并找到您喜欢的报告。

在php中的toctou.

Toctou是检查时的时间,使用时间。这适用于PHP可以在代码中的各个时间应用于值的静默。例如,此代码:

<?php 
  if ($a != 0) { 
    echo 4 / (int) $a; 
  } 
?> 

 

Although the variable $a is checked as non-zero, the following cast to integer may very well yield a 0, and lead to a DivisionByZero error. Try it with $a = 0.2; to understand the problem.

exakat现在向这些情况报告 测试然后是铸造 report.

支持4个新扩展

exakat包括支持4个新扩展:UOPZ,Opencensus,清漆,XXTEA。

EXT / UOPZ. stands for “Zend的用户操作”。它公开了在编译和执行时间使用的Zend引擎功能,允许修改内部结构。

例如,它允许删除常量,复制,备份,重命名函数和方法,更改类。此扩展对于测试框架特别有用,这可能不得不打破一些规则以使测试更容易。

</pre><pre><code class="language-none">&lt;?php 
  define("MY", true); 
  uopz_undefine("MY"); 
  var_dump(defined("MY")); // false 
?&gt;
</code></pre><pre>
 

EXT / OPENCENSUS 是统计数据集合和分布式跟踪框架。它适用于 Opencensus.io. 库,在应用程序中收集和跟踪指标,并将它们发送到分析工具。它还具有Laravel,Symfony,WordPress等的集成图书馆

</pre>
<?php // load composer dependencies require_once('/path/to/vendor/autoload.php');

use OpenCensus\Trace\Exporter\StackdriverExporter; use OpenCensus\Trace\Tracer;

OpenCensus\Trace\Integrations\Wordpress::load(); $exporter = new StackdriverExporter(); Tracer::start($exporter);

?>
<pre>
 

EXT / XXTEA. 是A. PECL Extension. 实现了XXTEA加密算法。它是一种简单的算法,具有低占地面积。

</pre>
<div>
<pre><code class="language-none"><?php
    require_once("xxtea.php");
    $str = "Hello World! 你好,中国!";
    $key = "1234567890";
    $encrypt_data = xxtea_encrypt($str, $key);
    $decrypt_data = xxtea_decrypt($encrypt_data, $key);
    if ($str == $decrypt_data) {
        echo "success!";
    } else {
        echo "fail!";
    }
?>
</code></pre>
<pre>

array_fill_keys()建议

Embassador报告,exakat的默认报告包括一个‘Suggestions’部分。这些建议,升级代码的代码或更好的技术。

例如,它是Classic,用于设置具有键列表的数组。

</pre>
<div>
<pre><code class="language-none"><?php

$keys = range('a', 'z');

// Fast way to build the array
$b = array_fill_key($keys, 0);

// Slow way to build the array
$b = array();
foreach($keys as $a) {
    $b[$a] = 0;
}

?></code></pre>
</div>
<pre>

该建议部分有很多改进: 第一串 这表明在操纵其内容之前缩短一个字符串, 从未使用参数 这在从未使用的函数定义中报告参数或 应该使用array_column() 从值阵列中提取有效的指数和属性。

快乐的PHP代码评论

随着exakat 1.1.7,审计和改善您的PHP代码。 exakat都能够帮助删除错误并使用高效的本机PHP功能。您可以使用它来学习代码中的新技巧。

全部 the 344 analyzers are presented in the docs, including the delightful preg_match_all()标志 :preg_match_all()有一个选项来配置结果的结构:它是捕获括号(默认情况下)或结果集。一世t’是一个稀有的虫子,评分为5%,但它使代码真正清洁。

下载exakat on exakat.io,用docker安装它,升级它‘exakat.phar升级-u’像我们在Github上一样: //github.com/exakat/exakat.