5

I am trying to use some Doxygen filter for Visual Basic in Windows.

I started with Vsevolod Kukol filter, based on gawk. There are not so many directions. So I started using his own commented VB code VB6Module.bas and, by means of his vbfilter.awk, I issued:

gawk -f vbfilter.awk VB6Module.bas  

This outputs a C-like code on stdin. Therefore I redirected it to a file with:

gawk -f vbfilter.awk VB6Module.bas>awkout.txt

I created this Doxygen test.cfg file:

PROJECT_NAME      = "Test"
OUTPUT_DIRECTORY  = test
GENERATE_LATEX    = NO
GENERATE_MAN      = NO
GENERATE_RTF      = NO
CASE_SENSE_NAMES  = NO
INPUT             = awkout.txt
QUIET             = NO
JAVADOC_AUTOBRIEF = NO
SEARCHENGINE      = NO

To produce the documentation I issued:

doxygen test.cfg 

Doxygen complains as the "name 'VB6Module.bas' supplied as the second argument in the \file statement is not an input file." I removed the comment @file VB6Module.bas from awkout.txt. The warning stopped, but in both cases the documentation produced was just a single page with the project name.

I tried also the alternative filter by Basti Grembowietz in Python vbfilter.py. Again without documentation, again producing errors and without any useful output.

4

2 回答 2

2

经过反复试验,我解决了这个问题。

我无法将.bas文件转换为可以将其作为输入传递给 Doxygen 的格式。无论如何,按照@doxygen 用户的建议,我能够创建一个 Doxygen 配置文件,以便它可以.bas正确解释文件注释。

给定文件VB6Module.bas(由 Doxygen-VB-Filter 作者 Vsevolod Kukol 编写),使用适用于 Visual Basic 的 Doxygen 样式进行注释,我编写了 Doxygen 配置文件,test.cfg如下所示:

PROJECT_NAME      = "Test"
OUTPUT_DIRECTORY  = test
GENERATE_LATEX    = NO
GENERATE_MAN      = NO
GENERATE_RTF      = NO
CASE_SENSE_NAMES  = NO
INPUT             = readme.md VB6Module.bas
QUIET             = YES
JAVADOC_AUTOBRIEF = NO
SEARCHENGINE      = NO
FILTER_PATTERNS   = "*.bas=vbfilter.bat"

在哪里:

  • readme.md是任何可以用作主要文档页面的 Markdown 文件。
  • vbfilter.bat包含:

    @echo off gawk.exe -f vbfilter.awk "%1%"

  • 假设过滤器作者的vbfilter.awk与要记录的输入文件位于同一文件夹中,显然 gawk应该在路径中。

跑步:

doxygen test.cfg 

一切都很顺利,除了两个看似无害的警告:

gawk: vbfilter.awk:528: warning: escape sequence `\[' treated as plain `[' 
gawk: vbfilter.awk:528: warning: escape sequence `\]' treated as plain `]' 

现在test\html\index.html包含由“.bas”和 Markdown 文件提取的正确文档。

于 2013-03-08T11:03:48.567 回答
1

好吧,我做了一些工作:

您可以下载此 .zip 文件。它包含:

  • MakeDoxy.bas使这一切发生的宏
  • makedoxy.cmd将由 MakeDoxy 执行的 shell 脚本
  • 包含创建 doxygen 文档所需的 doxygen 和 gawk 二进制文件的配置文件夹,以及一些已被 OP 使用的附加过滤文件。
  • source包含 doxygen 示例源代码的文件夹

如何使用:

注意:我用 Excel 2010 对其进行了测试

  1. 提取VBADoxy.zip somehwere(<root>从现在开始引用)

  2. 将 MakeDoxy.bas导入您的 VBA 项目。
    您还可以从源代码导入文件或使用您自己的 doxygen 文档化 VBA 代码文件,但您需要在同一个 VBA 项目中至少有一个文档化文件。

    在此处输入图像描述
  3. 将“Microsoft Visual Basic for Applications Extensibility 5.3”或更高版本添加到您的 VBA 项目参考中(未使用较低版本对其进行测试)。导出部分(VBProjectVBComponent)需要它。

    在此处输入图像描述

  4. 运行宏MakeDoxy

将会发生什么:

  1. 系统将要求您提供<root>文件夹。
  2. <root>\source之后会询问您是否要删除
    删除这些文件是可以的。它们不会从您的 VBA 项目中删除。
  3. MakeDoxy会将所有.bas,cls.frm文件导出到位置:
    <root>\source\<modulename>\<modulename>(.bas|.cls|.frm)
  4. cmd.exe如果您选择的方式将共同生成您想要的文档,则将被命令运行makedoxy.cmd和删除。<root>\source

每次执行MakeDoxyMakeDoxy.bas.log时都会重新创建一个日志文件。

configuration\vbdoxy.cfg如果你想改变 doxygens 的行为,你可以玩一点。

还有一些改进的空间,但我想这是可以使用的。

于 2014-07-23T14:58:56.143 回答