1

我一直在考虑这个问题很长时间(实际上是几年),并寻找在 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();
}

这个会:

  1. 在 foo1() 注释中添加“@throw MyException”行。

  2. 发出警告:“foo1() in file ... line ...: throws MyException, but not in comment!”

我知道 C++ 语言提供了可能引发异常的规范的可能性,问题是这不是在编译时检查的,而是在运行时检查的。我需要处理这种情况(如果我没记错的话,std::unexpected)。

如果需要像 doxygen 一样手动运行此工具,而不是每次编译时都需要手动运行,这不是问题。

4

0 回答 0