我的团队开始使用doxygen记录我们的C代码,特别注意我们的公共API头文件。在doxygen中似乎有很大的灵活性和不同的特殊命令,这很好,但不经过反复试验就不清楚什么是好东西,什么是坏东西。
你最喜欢用什么方法来标记你的代码,你必须做什么和不做什么?
请提供您的最佳建议,每个答案一个,以方便投票。
我希望定义API文档的整个方法,包括提供一个模板让团队的其他成员开始工作。到目前为止,我有这样的东西:
/**
* @file example_action.h
* @Author Me (me@example.com)
* @date September, 2008
* @brief Brief description of file.
*
* Detailed description of file.
*/
/**
* @name Example API Actions
* @brief Example actions available.
* @ingroup example
*
* This API provides certain actions as an example.
*
* @param [in] repeat Number of times to do nothing.
*
* @retval TRUE Successfully did nothing.
* @retval FALSE Oops, did something.
*
* Example Usage:
* @code
* example_nada(3); // Do nothing 3 times.
* @endcode
*/
boolean example(int repeat);
对于需要5分钟以上生成的大型项目,我发现能够快速为单个文件生成doxygen并在web浏览器中查看它非常有用。
虽然对文件外部任何内容的引用都不会解析,但查看基本格式是否正确仍然是有用的。
这个脚本使用一个文件和项目doxy配置并运行doxygen,我已经将其设置为从我的IDE运行。
#!/usr/bin/env python3
"""
This script takes 2-3 args: [--browse] <Doxyfile> <sourcefile>
--browse will open the resulting docs in a web browser.
"""
import sys
import os
import subprocess
import tempfile
doxyfile, sourcefile = sys.argv[-2:]
tempfile = tempfile.NamedTemporaryFile(mode='w+b')
doxyfile_tmp = tempfile.name
tempfile.write(open(doxyfile, "r+b").read())
tempfile.write(b'\n\n')
tempfile.write(b'INPUT=' + os.fsencode(sourcefile) + b'\n')
tempfile.flush()
subprocess.call(("doxygen", doxyfile_tmp))
del tempfile
# Maybe handy, but also annoying as default.
if "--browse" in sys.argv:
import webbrowser
webbrowser.open("html/files.html")
你不需要也不应该在@file指令中写入文件名,doxygen会自动读取文件名。写文件名的问题是,当你重命名文件时,你也必须改变@file指令。
提供@author和@date信息在大多数情况下也是无用的,因为源代码控制系统做得比手动编辑文件要好得多。
如果你使用以下Doxygen语法并在Doxygen的配置中启用JAVADOC_AUTOBRIEF,你也不必写@brief:
/*! Short Description on the first line
Detailed description...
...
*/
void foo(void) {}
函数的@name指令在大多数时候也是100%冗余的,完全无用。它只在有人修改函数名而不是doxygen @name时才会带来错误。