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 <[email protected]>
*/
?>
Ответы
Ответ 1
Но в верхней части вашего файла есть два таких документа? Предполагается, что первый docblock будет одним из файлов самого файла, а второй docblock должен соединиться с первым документируемым элементом кода, который появляется после него.
Однако, если у вас есть только один докроблок в верхней части файла, он будет сопряжен с первым найденным элементом кода, таким образом, "сам файл", похоже, будет отсутствовать в своем докблоке. Это означает, что эта ошибка должна указывать.
Ответ 2
@ashnazg прав, но я хочу улучшить ваш ответ на примере.
DocBlock на уровне файлов должен быть первым док-блоком и должен иметь Сводка (в этом примере сводка - "Категория класса | core/Category.class.php" ).
Затем перед определением класса помещается DocBlock на уровне класса.
<?php
/**
* Class Category | core/Category.class.php
*
* @package MyApp XYZ
* @subpackage Categories
* @author Sandro Miguel Marques <[email protected]>
* @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 {
...
Ответ 3
Итак, после многого поиска на сервере у меня есть полу-исправление проблемы, если кто-то еще столкнется с той же проблемой.
Я выяснил, как скрыть ошибку из документации, но не то, что ее вызывает.
Если полученная вами ошибка находится в строке 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
. Если я узнаю, как исправить код, чтобы остановить ложную ошибку (или исправить комментарии, чтобы убедиться, что ошибка не указана для регистрации), я отправлю ее здесь.
Ответ 4
Для чего я считаю, что создание документации из командной строки с использованием параметров, а не с использованием параметров в:
phpdoc -d ./ -t ./docs --ignore=vendor/*
Параметры vs в файле конфигурации phpdoc.dist.xml разрешили все проблемы, возникающие в этом потоке.
Я не думаю, что это останавливает необходимость в двух док-блоках в верхней части файлов, но похоже, что при создании документации возникает ошибка "Нет резюме для этого файла".
Ответ 5
Я получил то же сообщение об ошибке. Я избавился от него.
решение очень просто. в файловом блоке на
В верхней строке сводная строка имеет период в конце. Это указывает
его сводная строка.
убедитесь, что никакие другие блоки, которые следуют за атрибутами или методами и т.д., не имеют итоговой строки с периодом в конце. Как только я удалил их, ошибка немедленно исчезла (PHPDocumentor 2.8.5)