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)

Другие вопросы по тегам