2014-01-23 13 views
10

Ich habe phpDoc auf unserem Server installiert, eingerichtet usw. Es produziert Dokumentation richtig. Wir verwenden die Vorlage "Responsive", dieser Fehler tritt jedoch unabhängig von der verwendeten Vorlage auf.Phpdoc Keine Zusammenfassung für diese Datei gefunden

Unter dem ‚Fehler‘, scannte jede Datei scheint den folgenden Fehler zu haben:

Type  Line Description 
error  0  No summary was found for this file 

Ich habe erschöpfend für diesen gegoogelt und kann keine Lösung finden. Ich habe sogar die Mühe gemacht, den Server-Fehlercode hinter der Nachricht PPC:ERR-50000 ausfindig zu machen und zu versuchen, den Zustand zurückzuverfolgen, der den Fehler verursacht hat, aber ein bisschen verloren gegangen ist.

Meine Frage:

Was bedeuten diese Fehler? Warum ist es in Zeile 0 und wie zur Hölle werde ich es loswerden ?! Auch wenn ich den Docblock richtig gemacht habe, kann ich diesen Fehler ausblenden? Mein fehlerfreies OCD wird verrückt!

Vielen Dank

EDIT Einige zusätzliche Informationen: Jedes meiner Dateien die folgende Docblock aus Zeile 1 der Datei haben:

<?php 
    /** 
    * Short Description 
    * 
    * Long Description 
    * 
    * @package  Some Package 
    * @subpackage Some Subpackage 
    * @category  Some Category 
    * @author  F Bloggs <[email protected]> 
    */ 
?> 

Antwort

10

Aber hat der Anfang Ihrer Datei zwei solche Docblocks? Es wird erwartet, dass der erste Docblock derselbe für die Datei selbst ist, und ein zweiter Docblock sollte mit dem ersten Dokumentationscode-Element gepaart werden, das danach erscheint.

Wenn Sie jedoch nur einen Docblock am Anfang der Datei haben, wird dieser mit dem ersten gefundenen Codeelement verknüpft, so dass die "Datei selbst" ihren Docblock zu verpassen scheint. Das ist es, was dieser Fehler anzeigen soll.

+0

Das macht Sinn! Ich werde es später testen. Aus Neugier, wenn es eine 1-Klasse-pro-Datei-Politik ist, gibt es viel Sinn, eine Dateizusammenfassung und Klassenzusammenfassung zu haben - technisch wären beide dasselbe? Danke für deine Antwort. –

+0

Eine Klasse pro Datei ist eine Konvention, sicher, aber keine Einschränkung. Es gibt also Benutzer, die Dinge in einer Datei auf eine Weise tun, die aus organisatorischer Sicht einen Docblock auf Dateiebene erfordert. Aber meistens ist es ein Überbleibsel aus der phpdoc 1.x-Welt, wo es keine Namespaces gab und nur eine Minderheit von Kodierern einem Kodierungsstandard folgte :-) – ashnazg

+0

Für mich erstelle ich normalerweise nur einen Docblock auf Dateiebene, wenn es eine Menge gibt Funktionen in einer Datei. Verwenden Sie es als eine Art Klasse Docblock für globale Funktionen. – SiXoS

2

nach viel also auf dem Server des Suchens, Ich habe eine Semi-Fix für das Problem, sollte jemand das gleiche Problem auftreten.

Ich habe herausgefunden, wie Sie den Fehler aus der Dokumentation ausblenden, aber nicht, was es verursacht.

Wenn der Fehler, den Sie empfangen werden in Zeile 0, und ist keine Zusammenfassung für diese Datei gefunden, dann müssen Sie die folgende Datei bearbeiten:

phpDocumentor/src/phpDocumentor/Plugin/Core/Transformer/Writer/xml.php 

Sie werden dann für den geschützten suchen müssen Methode: createErrorEntry()

Dies ist, was das bestehende Verfahren wie folgt aussieht:

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()); 
} 

Diese Methode eine IF haben muss Bedingung hinzugefügt. Wickeln Sie den gesamten Körper des Verfahrens in der folgenden IF-Bedingung:

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()); 
    } 
} 

Dadurch wird der Fehler stoppen aufgezeichnet wird, in der Tat, es den Fehler vom Endbenutzer versteckt, nicht beheben es nicht das, was ich kann nur annehmen, ist ein Fehler in phpDocumentor. Der ursprüngliche Fehler ist also immer noch vorhanden, er wurde nicht aufgezeichnet.

Eine Sache, die ich beim Debuggen notiert habe, ist die vsprintf()-Funktion, die einen Fehler für den PPC: ERR-50000-Fehler verursacht. Die vsprintf() erzeugt den Fehler PHP Warning: vsprintf(): Too few arguments. Wenn ich herausfinden werde, wie man den Code repariert, um den falschen Fehler zu stoppen (oder die Kommentare zu korrigieren, um sicherzustellen, dass der Fehler keinen Grund zur Protokollierung gibt), werde ich ihn hier veröffentlichen.

+0

Diese Frage brachte mich in die richtige Richtung. Bei Verwendung der 'sauberen' Vorlage wird jedoch anscheinend der XML-Writer nicht verwendet. Ich stellte fest, dass das Problem behoben werden konnte, indem Sie die angefügten Validatoren innerhalb der AttachValidators-Methode änderten, die sich in ** src \ phpDocumentor \ Descriptor \ ServiceProvider.php ** befand. Suchen Sie nach 'PPC: ERR-50000' und kommentieren Sie diese Codezeile. Dadurch wird sichergestellt, dass Dateien unabhängig von dem verwendeten Transformer nicht auf diese spezifische Situation getestet werden. –

+0

Das scheint nur ein bisschen übertrieben. Ich bin nicht sicher, warum Sie den Fehler nicht einfach ignorieren würden? phpDoc scheint etwas hinter der Zeit zurück zu liegen, ich denke, das ist selbstverständlich. Tu einfach, was sich richtig anfühlt, und ignoriere "Fehler", die dir egal sind. –

1

Für das, was es wert ist, ich habe das in anstatt Parameter mit den Parametern der Erstellung der Dokumentation von der Kommandozeile gefunden:

alle
phpdoc -d ./ -t ./docs --ignore=vendor/* 

vs Parameter in einer phpdoc.dist.xml Konfigurationsdatei aufgelöst hat die in diesem Thread angesprochenen Probleme.

Ich glaube nicht, dass dies stoppt die Notwendigkeit für zwei Docblocks am Anfang der Dateien, aber es scheint zu lösen, die "Keine Zusammenfassung wurde für diese Datei gefunden" Fehler beim Erstellen der Dokumentation.

+0

vereinbart. Ich hatte dieses Problem mit View-Skripten für Zend Framework, Dateien mit der Erweiterung .phtml. Ich habe festgestellt, dass dies keine API-Dokumentation erfordert, daher habe ich phpdoc angewiesen, diese Dateien über eine Konfigurationsanweisung zu überspringen und vertraue darauf, dass ich diese Dateien entsprechend kommentiere. anders angegeben, wenn die Datei nicht mehr als ein Dokumentable Code-Element hat, nicht die Mühe zu generieren phpdoc dafür. – David

4

@ashnazg ist richtig, aber ich möchte Ihre Antwort mit einem Beispiel zu verbessern.

A auf Dateiebene DocBlock die erste Docblock sein soll und muss eine Zusammenfassung (in diesem Beispiel die Zusammenfassung "Klasse Kategorie | Kern/Category.class.php") hat. Dann wird ein DocBlock auf Klassenebene vor einer Klassendefinition platziert.

<?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

Ich habe genau die gleiche Fehlermeldung erhalten. Ich habe es los ..

die Lösung ist sehr einfach. in der Datei Block unter der oben, hat die Zusammenfassung Zeile einen Punkt am Ende davon. Dies zeigt eine Zusammenfassung an.

Stellen Sie sicher, dass keine anderen Blöcke, die für Attribute oder Methoden folgen, eine Zusammenfassungszeile mit einem Punkt am Ende haben. Sobald ich diese entfernte, verschwand der Fehler sofort (PHPDocumentor 2.8.5)

Verwandte Themen