【问题标题】:How to scan a project for "@todo" source code comments如何扫描项目中的“@todo”源代码注释
【发布时间】:2011-06-13 10:03:51
【问题描述】:

有什么方法可以扫描代码库中的任何 TODO 并生成可以显示在标准网页上的列表。

例如

@todo 不推荐使用的函数删除............(functions.php [第 12 行])

这需要在本地 WAMP 服务器上运行。

【问题讨论】:

  • Trac 对此有一个模块。你想要这个用于什么平台/工具/IDE?
  • 当您将项目加载到 IDE 中时,Netbeans 会自动执行此操作。
  • 基于 Eclipse 的 IDE 也会自动执行此操作。

标签: php html todo


【解决方案1】:

Windows 平台上,或者如果您想使用 PHP 本身,您可以使用...

function getTodos($path) {
   $todos = array();
   $items = glob(rtrim($path, '/') . '/*');

   foreach($items as $item) {

       if (is_file($item) AND pathinfo($item, PATHINFO_EXTENSION) == 'php') {
           $fileContents = file_get_contents($item);

           $tokens = token_get_all($fileContents);

           foreach($tokens as $type = $token) {
               if (($type == 'T_COMMENT' OR $type == 'T_ML_COMMENT')
                   AND preg_match_all('/^\s*(?P<todo>@todo.*?)\z/m', $token, $matches) {
                  $todos = array_merge($todos, $matches['todo']);
               }
           }

       } else if (is_dir($item)) {
           $todos = array_merge$($todos, getTodos($item));
           continue;
       }       

   }

   return $lines;
}

我还没有测试过,但理论上它应该可以工作。 :)

*nix 上,您可以使用 grep...

$ grep -r \b@todo\b ./

它并不完美(它会在字符串中找到它)但它应该足够好。 :)

【讨论】:

  • @alex: alex 今天你太活跃了! :D
  • @yes123 最近几天我一直不活跃 :)
  • 是否有 Windows/WAMP 替代 grep?
  • @James 谢谢,如果有任何错误,请随时告诉我 :) 它还假设您的 @todo 在评论中,并且待办事项部分仅跨越该行。如果不是,请修改正则表达式以适应。
【解决方案2】:

Phpdoc 可以从代码库中的 cmets 和方法生成 html 文件。它还会显示待办事项等。

http://www.phpdoc.org/

【讨论】:

    【解决方案3】:

    PHPStorm 具有提取所有待办事项文件的能力,我在提交之前使用它非常好的功能并且开箱即用。

    它对开源许可证是免费的, http://www.jetbrains.com/phpstorm/

    还有其他各种可用的许可证 http://www.jetbrains.com/phpstorm/buy/index.jsp

    [我不隶属于 Jetbrains,只是一个喜欢使用它的开发者]

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 1970-01-01
      • 2015-05-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多