【问题标题】:Extracting doc comments from C# source file [closed]从 C# 源文件中提取文档注释 [关闭]
【发布时间】:2010-10-20 01:42:29
【问题描述】:

有没有人知道任何工具可以让您直接从 .cs 文件中提取 cmets 到一些简单的文本甚至剪贴板中?如果这样的工具也可以在方法级别上工作,那就更好了。

不是在寻找像 Sandcastle 这样在构建时工作的东西,我正在寻找在单一源代码文件上工作的东西。基本上我需要将一大块方法签名和相关的 doc cmets 复制到一个文本文件中,但我对删除“///”和重新格式化这些行感到厌烦。我希望能够右键单击一个方法并在“将文档复制到剪贴板”的行中有一个上下文菜单项。

有这样的工具吗?

【问题讨论】:

  • 有时间我把exe上传到某个地方,希望明天...
  • 我已经更改了正则表达式,使其匹配,不仅是注释,还有下一行(仅适用于带有 /// 3 个斜杠的 cmets),因为 /// 当前 id int id = 0;也会被提取出来。

标签: c# visual-studio documentation comments


【解决方案1】:

我刚刚写了一个工具来做到这一点。它只是几行代码,还没有完成,但扩展起来非常简单(我明天可能会在某个地方这样做)。

结果:只需从菜单中单击提取,结果将显示在剪贴板上。

两个非常简单的步骤:

  1. 编写一个程序,将文件作为参数,从该文件中获取一些文本并将它们粘贴到剪贴板。
  2. 将该程序集成到您的 IDE 中。

第 1 步,第 1 部分 主程序,获取文件,将其发送到“提取器”并将结果写入剪贴板。

class Program
{
    [STAThread] 
    static void Main(string[] args)
    {           
        if (args.Length == 0) return;
        FileInfo f = new FileInfo(args[0]);
        Extracter e = new Extracter(f.OpenText().ReadToEnd());
        Clipboard.SetText(e.GetExtractedText());
    }
}

第 1 步,第 2 部分 提取器:当然使用正则表达式从中获取您需要的所有文本模式,并返回符合要求的字符串。我已经省略了帖子密度的 cmets,因为原理很简单并且已经解释过。

public class Extracter
    {
        private Regex re;
        // extend/adapt regex patterns for better result.
        const String RE_COMMENT_AND_NEXT_LINE= @"(?<=([\/]{3})).+";

        public string FileText { get; set; }

        public Extracter(String FileText)
        {
            this.FileText = FileText;
        }

        public String GetExtractedText() 
        {
            StringBuilder sb = new StringBuilder(String.Empty);
            re = new Regex(RE_COMMENT_AND_NEXT_LINE);
            foreach (Match match in  re.Matches(FileText))
            {
                sb.Append(match.ToString());
            }
            return sb.ToString();

        }
    }

第 2 步:添加到 IDE

当然依赖于 IDE,但总是很容易。看我的 VS2008 截图:

【讨论】:

  • 谢谢彼得,这看起来很有趣。
  • 恐怕我没有看到任何屏幕截图。
  • mmm 我现在都没有,但无论如何你都可以打开它们(在 ff 中:鼠标右键并在新标签中打开图像)
  • 猜想在运行 cmets 提取器之前需要先保存他们的代码
【解决方案2】:

不用自己动手,看看cr-documentor

CR_Documentor 是一个插件 DXCore 允许您预览 文档会是什么样子 渲染时 - 在工具窗口中 在 Visual Studio 中。

它工作得很好,但我怀疑它与 Resharper 一起运行有点不稳定,所以我禁用它直到我使用它。

【讨论】:

  • 酷,谢谢。不过,这是否需要 CodeRush 的许可证?
  • 您不需要 CodeRush,只需 DXCore,它是免费的。
  • 是的,它似乎真的不喜欢与 R# 一起运行。除此之外,它只是我需要的。谢谢。
【解决方案3】:

cmets 格式的 .cs 文件会自动转到 xml 文件。以下是说明:

  • 打开项目属性->构建
  • 到底部,有“输出”部分
  • 启用“XML 文档文件”复选框并设置此文件的输出路径
  • 此文件将在您构建代码时将所有代码文档复制到其中。

一旦你从你的项目中获得了所有的 cmets,你就可以随心所欲地使用它。

http://msdn.microsoft.com/en-us/magazine/cc302121.aspx

推荐:

您可以在日常工作中禁用它,就像项目大小增加一样,在构建期间生成此文件需要一些时间,因为它需要填充所有 cmets。只需在发布代码时运行,以便获得所有文档。

【讨论】:

  • 是的,但我认为关键是建筑不应该是必要的。
  • 完全正确。我已经在构建时生成了文档,但有时在不运行构建的情况下提取方法或类文档会很方便。
猜你喜欢
  • 2021-11-28
  • 2011-03-04
  • 2012-08-29
  • 2011-11-20
  • 2012-02-11
  • 2021-12-11
  • 2010-10-24
  • 2013-11-19
  • 2015-02-10
相关资源
最近更新 更多