我是一个强类型的语言支持者,但我正在从事一个大型的PHP项目。
我一直在使用PhpStorm,我很喜欢提示您可以提供的额外类型,下面的评论如下:
/** @var \Payments $payment */
/** @property \Payments $payment */PhpStorm很棒,因为当类型不匹配时,它会给您一些警告。
我想知道是否有可能在之外静态地进行这种检查,是一些类型的命令行预编译器,它将遍历代码,检查那些额外的提示,以便在检测到不匹配时显示一些错误。
是用phpcs可以做的事情吗?
我的最终目标是有一个自动工具来提醒我输入不匹配.
我甚至考虑切换到HHVM,以便有更好的类型暗示。但我不相信HHVM还能在生产中运行。
理想情况下,最好在HHVM上开发额外的类型提示,但是代码不会运行在我想要继续生产的Zend引擎上。
有什么想法吗?
谢谢。
发布于 2014-02-06 03:07:02
对于静态代码分析,特别是帮助进行类型错误检测,可以使用以下工具
CodeSniffer是编码标准检查器,对类型错误检测没有太大帮助。
发布于 2014-01-30 09:24:50
自动检查类型不匹配
Phantm
如果要检查代码中的类型不匹配,可以使用Phantm。您可以在詹金斯或svn钩子后提交中使用它。
来自官方网站
Phantm是用Scala编写的工具,可用于检测PHP应用程序中潜在的编程错误。它既适用于小型孤立脚本,也适用于成熟的应用程序。phantm代表“类型错误的PHp ANalyzer”。
Phantm需要
ant
sbt
Java 1.6 or higher
Scala 2.9.1 or higher使用
$ ./phantm <target.php>PHPLint
另一种检查php代码类型不匹配的方法是PHPLint。您可以将它与Jenkins、svn或其他工具一起使用。
来自官方网站
PHPLint是PHP4和PHP5程序的验证器和文档程序。PHPLint通过透明的元代码扩展了PHP语言,这些元代码可以驱动解析器对源代码进行更严格的检查。PHPLint不仅仅是一个检查器:它实现了一种新的、强类型的、在PHP语言之上实现的语言。您可以用PHPLint从头开始构建程序,也可以检查和修复现有的程序,或者遵循快速和肮脏的PHP编程方式,然后在程序完成后添加PHPLint元代码。无论您选择什么策略,PHPLint都会使您的程序更安全、更有保障、更好地记录在案,并且具有更少的bug。PHPlint祝您在线测试工具愉快。
有关使用PHPLint处理类型的更多信息
使用
$ phplint <target.php>手动检查类型不匹配
如果要使用PHPStorm检查变量类型,则使用可以使用PHPDoc元数据。。但是更好地使用php用于此:您可以启用E_NOTICE来报告未初始化的变量,用于捕获变量名拼写错误。在此之后,您可以使用实例检查您的函数:
/**
* @param array $data - highlight for PHPStorm
* @param MySuperClass $row - highlight for PHPStorm
*/
function(array $data, MySuperClass $row)
{
// Error if $data is not an array
// Error if $row is not instance of MySuperClass
/* do something .... */
}
/**
* @param array $data - highlight for PHPStorm
* @param MySuperClass $row - highlight for PHPStorm
*/
function($data, $row)
{
if (!is_array($data))
{
throw new TypeException('$data is must be array');
}
if (!($row instanceof MySuperClass))
{
throw new TypeException('$data is must be array');
}
}我认为是进行类型检查的最佳方法,当开发人员正在使用 TDD 方法编写正确的代码时。非常好的解决方案,您可以在正式php文档或PHPUnit官员阅读。
https://stackoverflow.com/questions/21392651
复制相似问题