2

codeigniter フレームワークを使用して Web サイトを開発しています。それを文書化するために、doxygen をインストールしました。doxygen が次の構造を持つファイルに遭遇すると、奇妙なことが起こります。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * @class
 * @brief The class brief 
 */
  class Catalogo extends CI_Controller {    
    public function __construct(){         
        parent::__construct();
        $this->load->model('catalogomodel');
        $this->load->library('img');
   }
    public function foo(){
       ..some code..
    }
/* End of file catalogo.php */
/* Location: ./application/controllers/catalogo.php */

これはスキップされた唯一のファイルです。codeigniter の通常の構造を持つ他のファイルは、必要に応じて文書化されています。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * @class
 * @brief The class brief 
 */
  class Catalogo extends CI_Controller {
    public function index(){
      ...some code to load models, libraries and views ...
    }
   /* End of file catalogo.php */
   /* Location: ./application/controllers/catalogo.php */
4

1 に答える 1

3

あなたが提供した例が実際のアプリケーションとどの程度一致しているかはわかりませんが、上記の元の例コードの場合:

クラス宣言が閉じていないようです ( がありません})。これにより、doxygen がクラス宣言を解析できなくなり、スキップされます。終了を追加すると、}doxygen はクラスを完全に解析できるようになり、ドキュメントに含める必要がありますが、クラスまたはそのメンバー関数のドキュメントは表示__constructされず、メンバー関数としてリストされません。

この変更が行われると、Doxygen 1.8.0 はコンテンツの処理中に 2 つの警告を報告します。

catalogo.php:6: warning: Compound Catalogo is not documented.
catalogo.php:13: warning: Member foo() (function) of class Catalogo is not documented.

1 つ目は、空の@classマークアップに関連しています。Doxygen は@class、コメントが適用されるクラス名がすぐ後に続くことを想定しており、通常、doxygen がそれが記述する構造の隣に配置されていない場合に使用されます。この場合、クラス宣言が直後に続く@classため、 を削除できます。Catalogoまたは、明示的に指定することもできます@class Catalogo。この変更を行うと、最初の警告が表示されなくなり、ドキュメントがCatalogodoxygen の出力に表示されますが、__constructまだ存在せfooず、詳細な説明にリンクされません。

foo2 番目の警告に対処するには、次のようなドキュメントを提供する必要があります。

/**
 * Documentation for foo.
 */
public function foo(){
}

この変更はfoo、詳細な説明へのリンクとともにドキュメントに表示されます。__constructまだ存在しませんが、同様のドキュメントを追加します:

/**
 * Documentation for __construct.
 */
public function __construct() {         
}

両方の機能が詳細な説明へのリンクとともに表示されます。これはすべて、デフォルトの doxygen 構成 ( doxygen -g) と Doxygen 1.8.0 を前提としています。私がテストした最終的なコードは次のとおりです。

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 * @brief The class brief 
 */
class Catalogo extends CI_Controller {
    /**
     * Documentation for __construct.
     */
    public function __construct(){         
        parent::__construct();
        $this->load->model('catalogomodel');
        $this->load->library('img');
    }

    /**
     * Documentation for foo.
     */
    public function foo(){
        ..some code..
    }
}
/* End of file catalogo.php */
/* Location: ./application/controllers/catalogo.php */
于 2012-05-13T05:20:10.910 に答える