Phpdoc没有找到该文件的摘要

时间:2014-01-23 15:34:00

标签: php phpdoc

我在我们的服务器上安装了phpDoc,设置等等。它正确地生成文档。 我们正在使用“响应式”模板,但无论使用何种模板,都会出现此错误。

在“错误”下,扫描的每个文件似乎都有以下错误:

Type        Line    Description
error       0       No summary was found for this file

我已经详尽地搜索了这个,但无法找到解决方案。我甚至已经完成了跟踪消息PPC:ERR-50000背后的服务器错误代码并尝试追踪导致错误的条件的努力,但是有点丢失了。

我的问题:

这个错误是什么意思?为什么它在第0行,我怎么能摆脱它?!即使我已正确完成docblock,我可以隐藏此错误吗?我没有错误的ocd疯了!

非常感谢

修改 一些额外信息:我的每个文件都有来自文件第1行的以下docblock:

<?php 
    /**
     * Short Description
     *
     * Long Description
     *
     * @package      Some Package
     * @subpackage   Some Subpackage
     * @category     Some Category
     * @author       F Bloggs <gbloggs@email.com>
     */
?>

6 个答案:

答案 0 :(得分:13)

但是文件的顶部是否有两个这样的docblock?第一个docblock应该是文件本身的一个,第二个docblock应该与它后面出现的第一个可记录代码元素配对。

但是,如果文件顶部只有一个docblock,它将与找到的第一个代码元素配对,因此“文件本身”似乎缺少其文件块。这就是错误应该表明的内容。

答案 1 :(得分:5)

@ashnazg是对的,但我想通过一个例子改进你的答案。

文件级DocBlock 应该是第一个docblock,并且必须具有摘要(在此示例中摘要为&#34; 类别类别|核心/Category.class.php")。 然后在类定义之前放置类级DocBlock

<?php
/**
 * Class Category | core/Category.class.php
 *
 * @package     MyApp XYZ
 * @subpackage  Categories
 * @author      Sandro Miguel Marques <sandromiguel@something.com>
 * @version     v.1.1 (06/12/2016)
 * @copyright   Copyright (c) 2016, Sandro
 */

namespace Myapp;

use \PDO;
use \Exception;
use \PDOException;

/**
 * Class Category - active record
 *
 * Recipe categories
 */
class Category {

    ...

答案 2 :(得分:2)

因此,经过对服务器的大量搜索后,如果其他人遇到同样的问题,我会对问题进行半解决。

我已经找到了如何隐藏文档中的错误,但不知道导致错误的原因。

如果您收到的错误在第0行,并且未找到此文件的摘要,则您需要编辑以下文件:

phpDocumentor/src/phpDocumentor/Plugin/Core/Transformer/Writer/xml.php

然后,您需要搜索受保护的方法:createErrorEntry()

这就是现有方法的样子:

protected function createErrorEntry($error, $parse_errors)
{
    $marker_obj = new \DOMElement(strtolower($error->getSeverity()));
    $parse_errors->appendChild($marker_obj);

    $message = ($this->getTranslator())
        ? vsprintf($this->getTranslator()->translate($error->getCode()), $error->getContext())
        : $error->getCode();

    $marker_obj->appendChild(new \DOMText($message));
    $marker_obj->setAttribute('line', $error->getLine());
    $marker_obj->setAttribute('code', $error->getCode());
}

此方法需要添加IF条件。将方法的整个主体包裹在以下IF条件中:

protected function createErrorEntry($error, $parse_errors)
{
    if($error->getCode()!=='PPC:ERR-50000')
    {
        $marker_obj = new \DOMElement(strtolower($error->getSeverity()));
        $parse_errors->appendChild($marker_obj);

        $message = ($this->getTranslator())
            ? vsprintf($this->getTranslator()->translate($error->getCode()), $error->getContext())
            : $error->getCode();

        $marker_obj->appendChild(new \DOMText($message));
        $marker_obj->setAttribute('line', $error->getLine());
        $marker_obj->setAttribute('code', $error->getCode());
    }
}

这将停止记录错误,实际上,它隐藏了最终用户的错误,它没有修复我只能假设是phpDocumentor中的错误。所以原始错误仍然存​​在,它还没有被记录下来。

我在调试时注意到的一件事是vsprintf()函数在PPC上产生错误:ERR-50000错误。 vsprintf()生成错误PHP Warning: vsprintf(): Too few arguments。如果我找到如何修复代码以停止错误错误(或修复注释以确保错误没有给出记录的原因),我会在这里发布。

答案 3 :(得分:1)

由于使用PHP> 7并且PHPDocumentor无法识别语法,因此出现了相同的错误,因此提供了此“默认错误”。

在我的代码中,PHPDocumentor无法解析函数中的空返回(?)。

我已解决了转到此链接的问题

https://github.com/phpDocumentor/phpDocumentor/releases

我了解并安装了“ PHP-7语法支持”

wget https://github.com/phpDocumentor/phpDocumentor/releases/download/v2.9.0/phpDocumentor.phar
sudo mv phpDocumentor.phar /usr/local/bin/phpdoc
sudo chmod +x /usr/local/bin/phpdoc

检查版本:

phpdoc --version

= phpDocumentor版本v2.9.0

它与此phpDocumentor版本一起使用

答案 4 :(得分:0)

我收到了完全相同的错误消息。我摆脱了它..

解决方案非常简单。在文件块中 在顶部,摘要行的末尾有一个句点。这表明 它是一个总结线。

确保没有其他跟随属性或方法的块或其他具有末尾句点的摘要行。删除后,错误立即消失(PHPDocumentor 2.8.5)

答案 5 :(得分:0)

当我的网站使用php v7.4时,而phpDocumentor.phar从php v7.2.5开始时,我遇到了这个问题。在PHP v7.4.0之前不允许使用强类型属性。

class Template
{
    /**
    * @var  string  The template with some replacement strings 
    */
    private string $template; 


  ....