代码之家  ›  专栏  ›  技术社区  ›  ChaosSpeeder

类似于javadoc或c#xml-doc[关闭]的delphi代码文档

  •  16
  • ChaosSpeeder  · 技术社区  · 17 年前

    我需要一个类似于javadoc或c#xml-doc的代码文档工具来编写delphi代码。最好的工具是什么?我更喜欢一种未来与微软沙堡项目兼容的技术。

    8 回复  |  直到 17 年前
        1
  •  7
  •   Community Mohan Dere    9 年前

    看一看 SynProject ,一个用Delphi编写的开源工具。

    它旨在处理从规范到发行说明的完整文档工作流程,包括测试、架构和设计;当然,还有一个集成的Delphi解析器,可以从现有的Delphi源代码生成架构文档。

    对于架构文档,源代码可以提取注释(ala-PasDoc),然后将此文本嵌入到主架构文档中(带有类层次结构图和单元依赖关系)。

    您可以在专用文本编辑器中使用类似wiki的语法编写一个纯文本文件,然后SynProject会从中创建格式良好的Word文档。可以使用一些向导来访问内容。但由于它是以纯文件形式存储的,因此多个程序员可以使用任何SCM工具(SVN、Fossil……)在其上进行编写。

    例如,我目前使用它为一个庞大而古老的Delphi应用程序编写维护文档(大约200万行代码是用Delphi 5和6编写的),之前没有可用的文档。您描述对代码所做的更改(通过引用单元/类/方法),然后该工具将更新所有文档以反映和跟踪这些修改。SynProject的设计符合一些非常“微妙”的监管规则(IEC 62304),但由于其独特的“扁平”设计,可用于任何项目。

    笔记 :我在提问后很长一段时间才发布这篇文章,因为SynProject此时还不存在,值得一看 has been defined as a reference for that question .

        2
  •  6
  •   Mihai Limbășan    17 年前

    据我所知,没有一个工具可以轻松地与Microsoft Sandcastle兼容——至少在有人真正费心编写一个工具、修改现有工具或创建一个工具链来正确转换输出之前是这样。

    我个人用过 PasDoc 取得了巨大的成功。我建议构建最新的SVN版本,因为当前版本偶尔会出现复杂的接口定义。

        3
  •  5
  •   Christian C. Salvadó    17 年前

    Delphi+JavaDoc= DelphiCodeToDoc

        4
  •  5
  •   albert    7 年前

    尝试: - Doxygen 文档 - Pas2Dox

        5
  •  2
  •   Community Mohan Dere    9 年前

    自Delphi 2005以来,它是在Delphi编译器中构建的。它使用XMLDoc标准,该标准使用XML样式的注释。就像C#一样,所以我想Sandcastle可以处理它 http://dn.codegear.com/article/32770 http://tondrej.blogspot.com/2006/03/xml-documentation-in-delphi-2006.html

    另请参阅 Documenting Delphi

        6
  •  1
  •   mark mark    17 年前

    Sandcastle需要访问程序集才能生成其文档,这意味着它只适用于.net语言(尽管我不确定是否可以使用Delphi.net)。然而,Delphi 2007和2009有一个与C#非常相似的内联XML文档。当您在项目选项中打开“生成XML文档”选项时,它将根据这些注释构建XML文档。 然后,XSLT可用于生成所需的任何文档格式(这是难点)。

        7
  •  1
  •   TridenT    16 年前

    DelphiCodeToDoc 还有一个命令行,可以将其与持续集成工具一起使用(例如)。

        8
  •  1
  •   Daniel Marschall    10 年前

    这个问题很老了,但我今天也遇到了同样的问题,发现了这篇文章。Delphi 2007允许以下语法,这似乎与C#文档相同:

    /// <summary>
    /// Summary of the function / class
    /// </summary>
    /// <param name="param1">Description of the parameter param1</param>
    /// <param name="param2">Description of the parameter param2</param>
    /// <param name="param3">Description of the parameter param3</param>
    /// <returns>Description of the return value</returns>
    function test(param1, param2, param3: string): string;
    

    <summary> ,似乎不可能允许换行。 <br /> 不起作用。