Phpdoc Резюме не найдено для этого файла
Я установил phpDoc на наш сервер, настроил и т. Д. Он правильно выдает документацию. Мы используем шаблон "Отзывчивый", однако эта ошибка возникает независимо от используемого шаблона.
В разделе "Ошибки" каждый отсканированный файл имеет следующую ошибку:
Type Line Description
error 0 No summary was found for this file
Я исчерпал себя за это, и не могу найти решение. Я даже попытался отследить код ошибки сервера за сообщением PPC:ERR-50000
и попытка отследить условие, которое вызывает ошибку, но немного потеряно.
Мой вопрос:
Что означает эта ошибка? Почему это на линии 0, и как, черт возьми, мне от этого избавиться?! Даже если я правильно сделал докблок, могу ли я скрыть эту ошибку? Мой безошибочный ocd сходит с ума!
Большое спасибо
РЕДАКТИРОВАТЬ некоторую дополнительную информацию: Каждый из моих файлов имеет следующий docblock из строки 1 файла:
<?php
/**
* Short Description
*
* Long Description
*
* @package Some Package
* @subpackage Some Subpackage
* @category Some Category
* @author F Bloggs <gbloggs@email.com>
*/
?>
5 ответов
Но есть ли в верхней части вашего файла два таких docblocks? Предполагается, что первый докблок предназначен для самого файла, а второй докблок должен быть связан с первым документируемым элементом кода, который появляется после него.
Однако, если у вас есть только один докблок в верхней части файла, он будет связан с первым найденным элементом кода, поэтому "самому файлу", похоже, будет не хватать своего докблока. Это то, что эта ошибка должна указывать.
@ashnazg прав, но я хочу улучшить ваш ответ на примере.
DocBlock уровня файла должен быть первым docblock и должен иметь сводку (в этом примере сводка - " Категория класса | core / 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 {
...
Поэтому после долгих поисков на сервере у меня есть пол-решение проблемы, если кто-то еще столкнется с той же проблемой.
Я узнал, как скрыть ошибку из документации, но не то, что ее вызывает.
Если полученная вами ошибка находится в строке 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
, Если я узнаю, как исправить код, чтобы остановить ложную ошибку (или исправить комментарии, чтобы убедиться, что ошибка не приведена для регистрации), я опубликую ее здесь.
Я получил ту же ошибку, потому что я использую PHP > 7, а PHPDocumentor не распознал синтаксис, поэтому была указана эта "ошибка по умолчанию".
В моем коде PHPDocumentor не может анализировать возвращаемые значения null (?) В функциях.
Я решил эту проблему, перейдя по этой ссылке
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
Я обнаружил, что создание документации из командной строки с использованием параметров, а не параметров:
phpdoc -d ./ -t ./docs --ignore=vendor/*
vs параметры в файле конфигурации phpdoc.dist.xml решили все проблемы, возникшие в этой теме.
Я не думаю, что это останавливает необходимость в двух docblocks вверху файлов, но, похоже, устраняет ошибку "Сводка не найдена для этого файла" при создании документации.
Я столкнулся с этой проблемой, когда мой сайт работал с 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;
....
Я получил точно такое же сообщение об ошибке. Я избавился от этого..
решение очень простое. в верхнем блоке файла итоговая строка имеет точку в конце. Это указывает на итоговую строку.
Удостоверьтесь, что никакие другие блоки, которые следуют за атрибутами или методами или чем-то еще, не имеют итоговой строки с точкой в конце. Как только я удалил их, ошибка сразу исчезла (PHPDocumentor 2.8.5)