- 论坛徽章:
- 0
|
10可用积分
最近在做性能优化,自己写了一个驱动桩,想插入现有产品的代码工程中
例子如下:
void func()
{
/*局部变量定义*/
int a=0;
/*入参检查*/
xxx
if()
{
return;
}
if()
{
return;
}
}
|
插入后如下:
void func()
{
/*局部变量定义*/
int a=0;
MPTC_PFM_Enter;
/*入参检查*/
xxxxx
if()
{
MPTC_PFM_Leave;
return;
}
if()
{
MPTC_PFM_Leave;
return;
}
MPTC_PFM_Leave;
return;
}
|
算法:
第一遍匹配插入,我想先查找注视部分,然后替换。
sed /^{/, /^}/{
/^\([[:space:]]\)*\/\*入参检查\*\//{
s//\n\1MPTC_PFM_Enter;&/
}
}
|
第二遍匹配插入,先过滤插入过的函数,然后查找第一次匹配的if,switch,或是赋值语句
sed /^{/, /^}/{
/^\([[:space:]]\)*\/\*入参检查\*\//!{
/^\([[:space:]]\)*if/{
s//\n\1MPTC_PFM_Enter;&/
}
}
}
|
但是不能实现预期的效果,达成效果如下:
void func()
{
/*局部变量定义*/
int a=0;
MPTC_PFM_Enter;
/*入参检查*/
xxxxx
MPTC_PFM_Enter;
if()
{
MPTC_PFM_Leave;
return;
}
MPTC_PFM_Enter;
if()
{
MPTC_PFM_Leave;
return;
}
}
|
这个脚本应该如何去实现啊?还有如何查找到函数末尾遗漏的return语句?
[ 本帖最后由 sonicsky 于 2009-12-30 22:50 编辑 ] |
最佳答案
查看完整内容
[ 本帖最后由 beginner-bj 于 2009-12-30 09:28 编辑 ]
|