exakat.2.1.6 reviewexakat.2.1.6 Review

exakat 2.1.6保持与PHP 8.0开发的步伐,并计算400分析的计数。虽然我们正在等待最终确定属性语法,但第一个PHP 8.0分析出现了:它会检查名为Arguments中的拼写错误。而且,对于当前的PHP版本,在类型检测和报表显示中,改进了类型的建议报告。当您尝试使您的类型覆盖范围更高时,请通过本报告提升。此外,我们遇到了与iconv和glob相关的两个可移植性问题,同时准备alpine码头图像,所以他们现在在这里添加。只有死人代码已经看到了exakat的结束2.1.6审查。

类型建议报告

exakat.provides a special report : 类型建议。它收集了代码中缺少的类型,并提供建议填补缺少的类型。

建议应用于所有类型的方法:功能,方法,闭包和箭头函数。我们’LL在此博客中可互换使用所有面额。

Suggestions are inferred based on the usage of the method and its usage of the parameters. For example, when relaying a parameter to another function which requires an integer, the parameter is presumed to be also of the same type, int. Or, when the parameter is used as an index in an array syntax, then, the parameter type suggested is string or an integer.

类型建议可能是多个:虽然不支持联盟类型,或者在PHP 8.0之前不支持多种类型,但可以为一个参数或返回类型进行若干建议。所有这些都提供了该报告:这提供了选择类型的更好的洞察力。

类型建议介绍了方法,参数和返回类型,并命名功能。我们’LL提到提及封闭件,作为在未来版本中的方法的一部分存储。

要生成此报告,请运行以下命令 exakat审计 :

php exakat.phar report -p <project name> -format Typesuggestion -v  

生成的文件将在项目文件夹中提供,名称下‘typehint.suggestion.html.’;

更多PHP 8.0支持

exakat.2.1.6增加了支持‘Missing arguments’,使用命名参数时。当ForcesCall中的参数的名称并未发生这种情况’t存在于函数签名中。

function foo($a) {} 
 foo(b: 1);

PHP在执行时间发出致命错误,而Exakat在编译时发现错误。这有助于防止代码中的不需要的中断。

新的便携性分析

添加了两个新的可移植性问题 可移植性 规则集。一个人 glob() 和一个与 iconv() .

iconv()

The TRANSLIT conversion option is not available on every system implementations : this is the case for the alpine Linux distribution, for example. In that case, PHP stops with a fatal error.

glob()

glob() supports various options, as GLOB_BRACE. This option allows brackets to be used as alternatives. {a,b,c} is understood as a, or b, or c. This option also is not supported on some systems, like Solaris, or Docker alpine.

虚拟方法

A new atom was added to the AST : 虚拟方法. This atom is a placeholder, and doesn’t have any representation in a PHP code, just like a Variabledefinition for example. It is the definition of a method, inside a class, when no explicit definition is available. This is fixed later in the process of the AST, when the trait or the parent’确定了定义。

虚拟方法 allows for faster analysis, and serves as a bridge for trait aliases : use traitT { foo as bar; } leads to the creation of an alias, without a definition. With the new 虚拟方法 atom, Exakat is able to handle those aliases.

每周审计:2020,周#37

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 : 2020, week 2020-37

快乐的PHP代码评论

所有402个分析仪都介绍在文档中,包括贵族: 大型尝试块):避免使用太大的尝试块。保持它小,并专注于可能提出异常的实际呼叫。

这是一个新的规则,感谢@afilina的灵感。

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

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