金沙上线.0.11.5评论,智能石猴。金沙上线 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/金沙上线/金沙上线.