金沙上线 0.11.5出来,在优秀之后 Darkmira Tour Brazil.。虽然它延迟了星期一的出版物,但它也给出了一个好的想法和机场的一段时间来工作。因此,此版本介绍了一个新的报告,调用‘Dependency wheel’和四个新分析:避免与类的类型,可以是类型的,所实施的方法必须是公开的,并且在左边没有引用。以及一些基础上的发动机工作,更新分析。它’金沙上线的时间0.11.5审查。
避免与课程的类型
Typehinting添加了对传入或传出数据的检查。它可以用类或界面完成。最好的方法是使用接口:这打开了通过重构版本完全替换当前类的可能性。然后,界面保证新类具有正确的方法。另一方面,使用类作为类型为typehint意味着将其子类替换它。
此分析报告使用作为类型对的类别,并建议使用界面。
<?php // Typehint with a class. class x { function foo(x $x) {} } // This is a replacement for the above class x2018 extends x { function foo(xInterface $x) {} } // Typehint with an interface interface xInterface { function foo(x $x); } class x implements xInterface { function foo(xInterface $x) {} } // This is a replacement for the above class x2018 implements xInterface { function foo(xInterface $x) {} } ?>
可以是类型的
此分析搜索使用方法‘instanceof’并建议使用比较类作为类型。通常,这导致代码更短,更系统地检查参数。当在相同的方法内使用各种类型时,该分析仍然是苛刻的,并且可以产生假阳性。拆分这种方法仍然可能是一个好主意。
<?php function foo($x) { if (!$x instanceof MyObject) { return false; } // do something } function bar(MyObject $x) { // do something } ?>
实施的方法必须是公开的
另一个代码的实例,暗示而不是执行:实现的方法必须公开在实现类中。即使未实例化代码,也会报告该代码时。
<?php class x implements i { private function foo() {} } interface i { function foo(); } ?>
错误消息实际上非常令人困惑:
Fatal error: Access level to x::foo() must be public (as in class i) in file.php on line 3
左边没有参考
该分析发现了PHP的罕见条件:
<?php $a = 1; $b = 2; $c = $a + $b; // $c === 5 $c = &$a + $b; // $c === $a === 1 $c = $a + &$b; // Fatal error ?>
答复&使得分配的优先顺论高于添加,导致丢失的添加,以及参考的分配。第3行和4看起来非常相似,但表现得非常明显。
我不’T期望找到这种分析的太多问题。很高兴知道金沙上线也有你的罕见问题。
依赖轮
上周后工作‘Code flower’,新报告基于Francois Zaninotto的另一个工作: 依赖轮。此报告显示圆圈中的所有类,并在延伸或实现定义时链接它们中的每一个。特质和使用正在下一次迭代。这使得类和复杂性具有很大的可视化。
车轮是动态的:您可以使用经典搜索功能搜索特定类,并且在播放类时,车轮会显示链接的类或接口。当链路大量时,链路很大,当它开始时很小,当它到达时很小,表示关系的方向。颜色是任意的,不携带任何含义。一个假人‘class’ called ‘Main’已添加以支持所有未扩展任何类的类。
在重构类时,这些轮子很有意思:您对依赖的依赖关系具有良好的可见性。
这种可视化可以是代码内的其他关系的基础:在未来几周内保持更多的调整。
快乐的PHP代码评论
金沙上线.0.11.5一直在向报告中添加更多洞察力。本周,我们借助Darkmira Tour:感谢巴西社区!和弗朗索瓦Zaninotto为您的贡献。将此新可视化应用于您的代码,并告诉我们您从中学到了什么@Exakat。
所有320多个分析仪都介绍在文档中,包括令人沮丧‘Substr比较失败‘将Subtr($ x,0,4)与具有不同长度的字符串进行比较(例如‘1234567’)。下载金沙上线 on 金沙上线.io,升级它‘金沙上线.phar升级-u’像我们在Github上一样: //github.com/金沙上线/金沙上线.