从 C# 源文件中提取文档注释 [关闭]

Posted

技术标签:

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

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

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

有这样的工具吗?

【问题讨论】:

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

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

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

两个非常简单的步骤:

    编写一个程序,将文件作为参数,从该文件中获取一些文本并将它们粘贴到剪贴板。 将该程序集成到您的 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。只需在发布代码时运行,以便获得所有文档。

【讨论】:

是的,但我认为关键是建筑不应该是必要的。 完全正确。我已经在构建时生成了文档,但有时在不运行构建的情况下提取方法或类文档会很方便。

以上是关于从 C# 源文件中提取文档注释 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

常见文档注释工具简介

如何从 python 源代码中删除注释和文档字符串? [关闭]

常见文档注释工具简介

Java文档注释

2-7:如何在java中使用注释

是否有用于注释 C# 代码的标准(如 phpdoc 或 python 的文档字符串)?