标签: doxygen

将C Callergraph与Doxygen合并或确定所有呼叫的并集

我有一个遗留的C代码集合,我正在重构,以便从GUI中分离出C计算代码.由于重度递归的数学核心代码是K&R样式声明,这很复杂.由于嵌套使用了函数参数,我已经放弃了将这些转换为ANSI声明的尝试(只是无法获得最后4个编译器错误).

我需要将一些文件移动到一个纯DLL中,并确定要公开的最小接口,这需要编写包装函数来发布一个类型化的接口.

我已经使用Doxygen @callergraph标记标记了关键源文件,因此为各个函数生成了信息图.除此之外我想做的是合并这些图,这样我就可以确定暴露于外部世界的最窄函数边界.

原始头文件没有用 - 它们将所有内容公开为非类型化C函数.

有数百个函数如此简单地检查生成的调用程序图是很痛苦的.

我正在考虑编写某种DOT合并工具 - 设置DOT_CLEANUP = NO使Doxygen离开中间的DOT文件而不是保留他们生成的png文件.

我并不痴迷于这是一个图形解决方案 - 如果有人能够建议使用Doxygen的XML输出来实现相同目标的替代分析工具(免费或相对便宜)或技术,我会很高兴.

在文件级别合并的调用图确实对客户端文档有一定的吸引力,而不是简单的列表:-)

refactoring code-analysis doxygen graphviz call-graph

4
推荐指数
1
解决办法
1446
查看次数

如何从C文件中提取代码注释?

我有一个包含大量代码注释的C文件,如何提取注释?只想要评论,而不是c代码.我可以使用任何工具来做到这一点.例如Doxygen?或者我需要自己构建一个解析器?如果需要,哪种语言更好?

提前致谢.

谢谢你们!!我现在开始研究perl,之前从未使用过这种语言,它看起来很聪明~~有什么建议从包含xml的文件中提取xml吗?

c parsing doxygen extract

4
推荐指数
1
解决办法
2804
查看次数

如何为xml文件注释生成doxygen文档?

我当前的项目是一个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设置?

xml doxygen

4
推荐指数
2
解决办法
8772
查看次数

宏扩展后重新扫描'已定义'运算符:它应该有效吗?

考虑

#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)

c macros doxygen c-preprocessor

4
推荐指数
1
解决办法
378
查看次数

对C++ 11模板别名的Doxygen支持('using'语法)?

我正在使用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)

是否有适当记录这些别名的设置或更高版本?

c++ doxygen c++11

4
推荐指数
1
解决办法
2484
查看次数

检测C++中不推荐使用的函数

在使用Doxygen记录的C++项目中,我在Doxygen注释中将一些函数标记为\已弃用.有没有办法使用这些注释(使用Doxygen或其他工具)来检测另一个未弃用的函数是否正在调用已弃用的函数?(该项目非常大,所有课程都需要花费很多时间).

谢谢

c++ doxygen deprecated

4
推荐指数
1
解决办法
3430
查看次数

如何在Doxygen中为\ xrefitem指定描述?

我正在使用\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)

但是它没有用;它破坏了其他一切。

doxygen

4
推荐指数
1
解决办法
1561
查看次数

doxygen不从输入过滤器产生输出(doxyqml)

我正在尝试使用doxyqml通过doxygen生成QML文档,但是没有创建文档页面.

根据doxyqml文档,我添加了一个*.qml条目FILE_PATTERNS,并添加*.qml=doxyqmlFILTER_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日).

doxygen doxywizard qml

4
推荐指数
1
解决办法
871
查看次数

doxygen文档c ++类模板

我正在尝试记录以下内容:

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++ templates doxygen class

4
推荐指数
1
解决办法
7573
查看次数

doxygen正在生成空文档

我有一个C ++(和一些CUDA)中的源存储库,我想对其进行充氧。我已经在某些(但不是全部)代码中添加了doxygen注释;生成了Doxygen配置文件,并运行doxygen以查看部分输出。

我得到的是:什么都没有。空的

生成一个主页,它只是什么都没有显示-即使我特别设置了EXTRACT_ALL = YES(在获得空结果后也是如此EXTRACT_ALL = NO。)

为什么什么都没有产生,我该如何解决?

笔记:

  • 所有头文件都有@file注释。
  • 我已经在允许的模式中添加了与CUDA相关的扩展
  • 我有这个问题的较早版本,没有答案,随后情况有所变化(因此我删除了那个问题)。
  • 即使从中删除大多数行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)

c++ doxygen code-documentation

4
推荐指数
1
解决办法
4344
查看次数