我在我们的服务器上安装了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>
*/
?>
答案 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;
....