【问题标题】:Error generating phpdoc with phing使用 phing 生成 phpdoc 时出错
【发布时间】:2013-08-02 04:34:50
【问题描述】:

我正在为我的项目配置 Jenkins,我想创建 phpdoc,但它不起作用。 我正在使用 phing,而我的服务器使用的是 Debian。

我做了什么:

  • 安装phpDoc

    pear install phpdoc/phpDocumentor-beta
    
  • 平:

    <target name="phpdoc">
         <phpdoc2 destdir="${workspace}/app/docs" template="responsive">
             <fileset dir="./src">
                 <include name="**.*.php" />
             </fileset>
         </phpdoc2>
     </target>
    

我收到了这个错误:

    PHP Fatal error:  Call to undefined method phpDocumentor\Parser\Parser::setTitle() in /usr/share/php/phing/tasks/ext/phpdoc/PhpDocumentor2Wrapper.php on line 169
    PHP Stack trace:
    PHP   1. {main}() /usr/share/php/phing.php:0
    PHP   2. Phing::fire() /usr/share/php/phing.php:43
    PHP   3. Phing::start() /usr/share/php/phing/Phing.php:270
    PHP   4. Phing->runBuild() /usr/share/php/phing/Phing.php:170
    PHP   5. Project->executeTargets() /usr/share/php/phing/Phing.php:572
    PHP   6. Project->executeTarget() /usr/share/php/phing/Project.php:791
    PHP   7. Target->performTasks() /usr/share/php/phing/Project.php:818
    PHP   8. Target->main() /usr/share/php/phing/Target.php:321
    PHP   9. Task->perform() /usr/share/php/phing/Target.php:298
    PHP  10. PhingCallTask->main() /usr/share/php/phing/Task.php:260
    PHP  11. PhingTask->main() /usr/share/php/phing/tasks/system/PhingCallTask.php:158
    PHP  12. PhingTask->processFile() /usr/share/php/phing/tasks/system/PhingTask.php:150
    PHP  13. Project->executeTarget() /usr/share/php/phing/tasks/system/PhingTask.php:277
    PHP  14. Target->performTasks() /usr/share/php/phing/Project.php:818
    PHP  15. Target->main() /usr/share/php/phing/Target.php:321
    PHP  16. Task->perform() /usr/share/php/phing/Target.php:298
    PHP  17. PhpDocumentor2Task->main() /usr/share/php/phing/Task.php:260
    PHP  18. PhpDocumentor2Wrapper->run() /usr/share/php/phing/tasks/ext/phpdoc/PhpDocumentor2Task.php:147
    PHP  19. PhpDocumentor2Wrapper->parseFiles() /usr/share/php/phing/tasks/ext/phpdoc/PhpDocumentor2Wrapper.php:201
    Build step 'Invoke Phing targets' marked build as failure

似乎找不到phpDocumentor类但我找不到原因!

我的包含路径是 .:/usr/share/php:/usr/share/pear 并且 phpDocumentor 安装在 /usr/share/pear 文件夹中。

有什么想法吗?

编辑: 我创建了一个简单的测试文件:

    # cat test.php
    <?php
    $parser = new \phpDocumentor\Parser\Parser();

但我收到此错误:

    # php -f test.php
    PHP Fatal error:  Class 'phpDocumentor\Parser\Parser' not found in /var/www/test.php on line 2
    PHP Stack trace:
    PHP   1. {main}() /var/www/test.php:0

为什么我已经安装了 phpDocumentor 接缝:

pear info phpdoc/phpDocumentor
About pear.phpdoc.org/phpDocumentor-2.0.0
=========================================
Release Type          PEAR-style PHP-based Package
Name                  phpDocumentor
Channel               pear.phpdoc.org
[...]
Release Date          2013-08-03 06:08:35
Release Version       2.0.0 (stable)
API Version           2.0.0 (stable)
package.xml version   2.0
Last Modified         2013-08-06 08:17
Previous Installed    - None -
Version

【问题讨论】:

    标签: php jenkins pear phpdoc phing


    【解决方案1】:

    我终于用 exec 命令成功了:

    <target name="phpdoc" description="API Documentation">
         <exec command="phpdoc
            -d ${ws}/src
            -t ${builddir}/reports/doc/
            --template responsive
        " />
    </target>
    

    选项较少,不是很漂亮,但很管用。

    【讨论】:

      【解决方案2】:

      下载稳定版1.4.4(稳定版)-http://pear.php.net/package/PhpDocumentor/

      尝试设置标题:

      <target name="phpdoc">
           <phpdoc2 title="Some Title" destdir="${workspace}/app/docs" template="responsive">
               <fileset dir="./src">
                   <include name="**.*.php" />
               </fileset>
           </phpdoc2>
       </target>
      

      【讨论】:

      • 谢谢,但我得到了完全相同的错误。我认为这可能是梨自动加载配置问题...
      【解决方案3】:

      我的预感是您正在安装 phpDocumentor 1.x,但使用的是为 phpDocumentor 2.x 设计的 Phing 任务。

      【讨论】:

      • 我已经按照phpdoc.org的安装指南:pear channel-discover pear.phpdoc.org pear install phpdoc/phpDocumentor
      • 我尝试安装 phpDocumentor 1.x 但同样的问题,所以我回到了 phpDocumentor 2.x。
      • 我的观点是,在我看来,您使用的 Phing 任务是为 phpDocumentor 2.x (phing.info/docs/guide/stable/chapters/appendixes/…) 编写的任务。但如果您实际上安装了 phpDocumentor 1.x,则需要使用为它编写的 Phing 任务 (phing.info/docs/guide/stable/chapters/appendixes/…)。
      • 但是,我现在认为更可能的情况是 Phing 的 phpDocumentor2 任务可能无法赶上 phpDocumentor 2.x 的 alpha/beta 时期的最新工作。 phpdoc2 中的类重构完全有可能使 Phing 任务无法运行。不过,这只是一个猜测。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 2018-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多