サーバーにphpDocをインストールしたり、セットアップしたりしました。ドキュメントが正しく作成されています。 「レスポンシブ」テンプレートを使用していますが、このエラーは使用されているテンプレートに関係なく発生します。
「エラー」の下で、スキャンされた各ファイルには次のエラーがあるようです。
Type Line Description
error 0 No summary was found for this file
私はこれを徹底的にグーグルで検索しましたが、解決策が見つかりません。メッセージの背後にあるサーバーエラーコードを追跡する作業も行っていますPPC:ERR-50000
そして、エラーの原因となった状態を追跡しようとしましたが、少し失われました。
私の質問:
このエラーはどういう意味ですか?なぜそれが0行目にあるのですか、そしてどうすればそれを取り除くことができますか?! docblockを正しく実行した場合でも、このエラーを非表示にできますか?私のエラーのないocdは夢中になっています!
どうもありがとう
[〜#〜] edit [〜#〜]いくつかの追加情報:各ファイルには、ファイルの1行目から次のdocblockがあります。
<?php
/**
* Short Description
*
* Long Description
*
* @package Some Package
* @subpackage Some Subpackage
* @category Some Category
* @author F Bloggs <[email protected]>
*/
?>
しかし、ファイルの先頭にはtwoそのようなdocblockがありますか?最初のdocblockはファイル自体のdocblockであると想定され、2番目のdocblockは、その後に表示される最初の文書化可能なコード要素とペアになる必要があります。
ただし、ファイルの先頭にdocblockが1つしかない場合は、最初に見つかったコード要素とペアになるため、「ファイル自体」にdocblockがないように見えます。それはそのエラーが示すことになっているものです。
@ashnazgは正しいですが、例を挙げて回答を改善したいと思います。
ファイルレベルのDocBlockは、最初のdocblockである必要があり、Summary(この例では、要約は "クラスカテゴリ| 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 {
...
したがって、サーバーで多くの検索を行った後、他の誰かが同じ問題に遭遇した場合に備えて、問題を半修正しました。
ドキュメントからエラーを非表示にする方法を見つけましたが、原因はわかりません。
受け取ったエラーが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のバグであると私が推測できるものは修正されません。したがって、元のエラーはまだ存在し、記録されていないだけです。
デバッグ中に注意したことの1つは、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構成ファイルのパラメーターは、このスレッドで発生したすべての問題を解決しました。
これでファイルの先頭に2つのdocblockが必要になるとは思いませんが、ドキュメントを作成するときに「このファイルの概要が見つかりませんでした」というエラーは解決されているようです。
まったく同じエラーメッセージが表示されました。私はそれを取り除きました。
解決策は非常に簡単です。上部のファイルブロックでは、要約行の最後にピリオドがあります。これは、その要約行を示します。
属性やメソッドなどに続く他のブロックに、末尾にピリオドが付いた要約行がないことを確認してください。それらを削除すると、エラーはすぐに消えました(PHPDocumentor 2.8.5)