我有一个庞大的C ++代码库,其中包含一些我计划重写的错误日志记录功能,定义如下;
void LogError(ErrorLevel elvl,LPCTSTR Format,...); // Literal version
void LogError(ErrorLevel elvl,UINT ResourceID,...); // Resource version
我打算将这些重写为单一功能
void LogError(ErrNo No,...);
在这种情况下,ErrNo将是一个枚举,用于从外部文件中查找其余的错误详细信息。虽然我正在使用并喜欢Visual Assist,但它似乎并不适合这种事情。我认为执行这个重构的最简单的方法是编写一个小程序,它使用搜索输出的结果来查找该函数的所有出现,例如:
c:\cpp\common\Atlas\Comps\LSADJUST.cpp
LSAFormNormalEquations (174): LogError(elvl_Error,IDS_WINWRN0058,i+1,TravObs.setup_no,TravObs.round_no
LSAFormNormalEquations (180): LogError(elvl_Error,IDS_WINWRN0059,i+1,TravObs.setup_no,TravObs.round_no
LSAFormNormalEquations (186): LogError(elvl_Error,IDS_WINWRN0060,i+1,TravObs.setup_no,TravObs.round_no
c:\cpp\common\Atlas\Comps\LSADJUSTZ.CPP
LSAFormNormalEquationsZ (45): LogError(elvl_Note,_T("Adjusting heights by least squares"));
c:\cpp\Win32\Atlas\Section\OptmizeSectionVolumes.cpp
OnSectionOptimizeVolumes (239): LogError(elvl_Note,"Shifted section at chainage %0.1lf by %0.3lf",Graph.c1,Offset);
然后解析并修改源代码。还有其他工具可以为我简化这项任务吗?如果看一个related question哪个含量那么多。我不介意花一点钱购买一个相当容易使用的工具,但是没有足够的时间或预算用于此类工作。
答案 0 :(得分:1)
如果您使用的是Unix,使用sed
编辑所有源代码可能会处理大部分更改。您必须手动完成一些更改。我过去曾使用过这种技术。
答案 1 :(得分:0)
寻找能够满足我需求的轻量级东西,这是一个空白,而且学习SED虽然值得,但对于那些不能解决我问题的东西来说,这将是一项相当大的工作。我最终编写了自己的工具来执行代码库的单独副本所需的重构,直到我很高兴它正在完全按照我的需要进行操作。这涉及从Visual Assists获取输出查找所有引用选项,并使用它来重构代码库。我发布了代码,但是因为它代表的非常糟糕,并且可能会在不同的代码库下失败。一般问题可以更好地说明如下
我猜测上面的功能对于已经解析源的人来说很容易实现,并且会将这个问题的链接传递给Whole Tomato作为增强建议。
修改:对于任何有兴趣的人,都会对VA forum here进行一些跟进。