我有一个遗留的C代码集合,我正在重构,以便从GUI中分离出C计算代码.由于重度递归的数学核心代码是K&R样式声明,这很复杂.由于嵌套使用了函数参数,我已经放弃了将这些转换为ANSI声明的尝试(只是无法获得最后4个编译器错误).
我需要将一些文件移动到一个纯DLL中,并确定要公开的最小接口,这需要编写包装函数来发布一个类型化的接口.
我已经使用Doxygen @callergraph标记标记了关键源文件,因此为各个函数生成了信息图.除此之外我想做的是合并这些图,这样我就可以确定暴露于外部世界的最窄函数边界.
原始头文件没有用 - 它们将所有内容公开为非类型化C函数.
有数百个函数如此简单地检查生成的调用程序图是很痛苦的.
我正在考虑编写某种DOT合并工具 - 设置DOT_CLEANUP = NO使Doxygen离开中间的DOT文件而不是保留他们生成的png文件.
我并不痴迷于这是一个图形解决方案 - 如果有人能够建议使用Doxygen的XML输出来实现相同目标的替代分析工具(免费或相对便宜)或技术,我会很高兴.
在文件级别合并的调用图确实对客户端文档有一定的吸引力,而不是简单的列表:-)
我有一个包含大量代码注释的C文件,如何提取注释?只想要评论,而不是c代码.我可以使用任何工具来做到这一点.例如Doxygen?或者我需要自己构建一个解析器?如果需要,哪种语言更好?
提前致谢.
谢谢你们!!我现在开始研究perl,之前从未使用过这种语言,它看起来很聪明~~有什么建议从包含xml的文件中提取xml吗?
我当前的项目是一个C++应用程序.使用doxygen生成文档,并相应地格式化注释.
该项目还包括几个带注释的xml资源文件.我想将它们包含在文档中.
下面是我想要做的事情的说明:
输入(我的应用程序使用的文件,myFile.xml):
<!--
@brief settings used by class MyClass at startup
@image html screenshot_default.jpg
-->
<Myclass_settings id="default_setting">
<param_1 value="1"/>
<param_2 value="XXXXX"/>
</Myclass_settings>
<!--
@brief settings used by class MyClass - reserved to experienced users
@image html screenshot_advanced.jpg
-->
<Myclass_settings id="advanced_setting">
<param_1 value="42"/>
<param_2 value="WWWWW"/>
</Myclass_settings>
Run Code Online (Sandbox Code Playgroud)
输出(由doxygen生成的文档):
myFile.xml File Reference
Elements
default_setting
settings used by class MyClass at startup
[here screenshot_default is inserted]
advanced_setting
settings used by class MyClass - reserved to experienced users
[here screenshot_advanced is inserted]
Run Code Online (Sandbox Code Playgroud)
我该如何撰写评论,以及我需要哪些doxygen设置?
考虑
#define FOOBAR (defined(FOO) || defined(BAR))
#if FOOBAR
/* Do stuff. */
#endif
Run Code Online (Sandbox Code Playgroud)
这有用吗?我问,因为显然我的编译器没有问题,但doxygen内部预处理器认为有一个语法错误#if.我知道我可以解决这个问题
#if defined(FOO) || defined(BAR)
#define FOOBAR 1
#endif
#if FOOBAR
/* Do stuff. */
#endif
Run Code Online (Sandbox Code Playgroud) 我正在使用doxygen 1.7.1为某些C++ 11代码生成文档,它似乎忽略了我的模板别名.
为清楚起见,这是模板别名的示例:
template<class T>
using ResultOf = std::result_of<T>::type;
Run Code Online (Sandbox Code Playgroud)
它也无法获得使用更清晰的new using语法编写的更多传统typedef:
using PredicateOne = std::function<bool(string)>; // Doxygen doesn't catch this
typedef std::function<bool(string)> PredicateTwo; // but does catch this.
Run Code Online (Sandbox Code Playgroud)
是否有适当记录这些别名的设置或更高版本?
在使用Doxygen记录的C++项目中,我在Doxygen注释中将一些函数标记为\已弃用.有没有办法使用这些注释(使用Doxygen或其他工具)来检测另一个未弃用的函数是否正在调用已弃用的函数?(该项目非常大,所有课程都需要花费很多时间).
谢谢
我正在使用\xrefitem命令创建一堆用户定义的部分,这些部分都将自动交叉引用。例如,我使用的别名之一如下所示:
hack=\xrefitem hack \"Hack\" \"Wall of Shame\""
Run Code Online (Sandbox Code Playgroud)
这一切都很好。该文档完全按照我的要求生成,并且指向“耻辱之墙”的链接出现在“相关页面”页面上:

但是我不知道如何在此链接的右边添加说明。这个空的描述单元格只是乞求要填充。我怎样才能使它快乐?
尽管文档中没有指出这是有效的语法,但我还是尝试在别名末尾附加说明,如下所示:
hack=\xrefitem hack \"Hack\" \"Wall of Shame\" \"Some sample descriptive text\""
Run Code Online (Sandbox Code Playgroud)
但是它没有用;它破坏了其他一切。
我正在尝试使用doxyqml通过doxygen生成QML文档,但是没有创建文档页面.
根据doxyqml文档,我添加了一个*.qml条目FILE_PATTERNS,并添加*.qml=doxyqml到FILTER_PATTERNS(doxyqml可用,/usr/bin所以只需调用doxyqml命令行就足以启动它).
从doxygen输出我可以看到*.qml文件模式正在工作,因为文件出现在输出的"读取"阶段 - 但不是解析阶段.如果我#define在文件中添加一个或其他非QML语句,那么doxygen输出中会出现doxyqml错误,所以我知道正确调用了doxyqml.
我也知道doxyqml输出是正确的,因为如果我直接用一个qml文件复制调用doxyqml的输出,并将其粘贴到一个*.h文件中,doxygen会为它构建文档.
这几乎就像doxygen只是没有读取doxyqml的输出.有没有其他人有这种经验?我正在使用doxygen 1.8.8和最新的doxyqml代码库(2014年7月7日).
我正在尝试记录以下内容:
template <class T, int NDim>
class myClass {
public:
.
.
Run Code Online (Sandbox Code Playgroud)
这是氧气
/*!
* \class myClass<T, NDim>
* \brief Defines a class for stuff.
*/
Run Code Online (Sandbox Code Playgroud)
发电量:
myClass类参考
定义东西的类。
因此,我缺少模板信息,但这并不是世界末日,因为我知道doxygen不能很好地处理模板。主要问题是生成期间的警告:
myClass.h:2:警告:作为\ class,\ struct,\ union或\ include命令的参数提供的名称“ T”不是输入文件
我该如何解决此警告?
我有一个C ++(和一些CUDA)中的源存储库,我想对其进行充氧。我已经在某些(但不是全部)代码中添加了doxygen注释;生成了Doxygen配置文件,并运行doxygen以查看部分输出。
我得到的是:什么都没有。空的
生成一个主页,它只是什么都没有显示-即使我特别设置了EXTRACT_ALL = YES(在获得空结果后也是如此EXTRACT_ALL = NO。)
为什么什么都没有产生,我该如何解决?
笔记:
@file注释。doxygen.cfg(请参阅下文),问题仍然存在。doxygen.cfg (较短的版本,注释被过滤掉):
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = "cuda-api-wrappers"
PROJECT_BRIEF = "Thin C++-flavored wrappers for the CUDA Runtime API"
OUTPUT_DIRECTORY = docs
ALLOW_UNICODE_NAMES = YES
OUTPUT_LANGUAGE = English
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
FULL_PATH_NAMES = YES
JAVADOC_AUTOBRIEF = YES
QT_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
INHERIT_DOCS = YES
SEPARATE_MEMBER_PAGES = NO
TAB_SIZE = 4
EXTENSION_MAPPING = …Run Code Online (Sandbox Code Playgroud) doxygen ×10
c++ ×4
c ×2
c++11 ×1
call-graph ×1
class ×1
deprecated ×1
doxywizard ×1
extract ×1
graphviz ×1
macros ×1
parsing ×1
qml ×1
refactoring ×1
templates ×1
xml ×1