我正在研究项目的日志记录机制,目前每个API函数都需要添加
start_api_call(***)
在函数的开头
函数do_something(int foo, int bar)
的***为"foo", foo, "bar",bar
(日志功能获取参数并形成所需的消息)
我想让这一行自动生成,其中的目标是以某种方式(mabye clang工具?)编译器检查.cpp中的每个函数,如果它是API函数(稍后会有更多详细信息),如果它是的,只需将start_api_call(***)
添加到代码中即可。
我有两个主要问题,我应该去哪个方向
1)我从来没有编写代码,它的目标是'是要解析一个源代码,因此我不知道我应该走向哪个方向,我已经阅读了一些关于clang工具的文档,但也许只是一个python脚本会更好吗?
<登记/>
2)我们的设计如下:
object_foo.h //inside .include/
class foo{
API functions
}
object_foo_impl.h //inside .src/
include "object_foo.h"
class foo_impl :foo{
foo API functions
a lot more functions
}
object_foo_impl.cpp
include "object_foo_impl.h"
{
implementation of all foo_impl functions
}
应仅为API函数插入start_api_call,
因此,如果此函数来自foo.h,或者来自foo_impl.h文件,我需要在.cpp文件中找到查询的方法。
我有一个如何使用python脚本工作的概念,它解析我们所有的源代码,使用正则表达式识别/include/.h文件中的文本是一个函数然后查找里面的所有函数。实现这些功能的cpp文件,
但是(如果可能的话)在编译(/预处理器)时间中添加规则的概念更具吸引力
非常感谢任何帮助。