我一直在考虑这个问题很长时间(实际上是几年),并寻找在 C++ 中处理异常的最佳方法。所以我想到了可以帮助我的工具,所以我想问一下这个工具是否存在(我无法谷歌它)。
该工具将解析 C++ 源代码(包括头文件和源代码)并使用异常信息填充类似 doxygen 的注释(最好扩展我已经写过的关于方法本身的注释)。对于每个方法,异常列表将从代码中生成——从每次出现“throw SomeException;”开始。命令,来自被调用函数的列表(注意递归)和已知命令可能引发异常(目前,我只能找到 operator new)。所以我可以跟踪所有异常,看看我是否忘记管理来自其他模块的异常,看看是否有意外从析构函数抛出异常的可能性(这禁止了 AFAIK)。
或者我可以使用类似的工具,它不会自动填充 doxygen 评论,但至少会警告我没有评论的评论。类似地,当我运行 doxygen 文档生成器时,我忘记注释一个输入变量并且生成器会警告我这一点。
那么,有这样的工具吗?如果没有,是否有非常易于使用的库解析 C++ 代码,以便我可以轻松地为自己实现它?
例子:
//// Example.h ////
/**
* Does almost nothing.
*/
void foo1();
/**
* Generates some error.
*/
void foo2();
//// Example.cpp ////
#include "Example.h"
void foo1()
{
foo2();
}
void foo2()
{
throw MyException();
}
这个会:
在 foo1() 注释中添加“@throw MyException”行。
发出警告:“foo1() in file ... line ...: throws MyException, but not in comment!”
我知道 C++ 语言提供了可能引发异常的规范的可能性,问题是这不是在编译时检查的,而是在运行时检查的。我需要处理这种情况(如果我没记错的话,std::unexpected)。
如果需要像 doxygen 一样手动运行此工具,而不是每次编译时都需要手动运行,这不是问题。