我有一个庞大的图书馆,并计划停用几对类。
例如。:
class [[deprecated]] OldApi {
// details
};
想法是不赞成使用此类的所有内容。例如:一个隐藏的依赖项在 header 中看起来像这样:// on API we have no old API dependency
void hiddenDependency();
并在编译单元中:void hiddenDependency()
{
OldApi inst;
// work on it/do something
}
我真的有很深的依赖关系图,所以手动解决方案会很麻烦。有什么方法/工具可以继承这些不赞成使用的属性吗?因此,使用此工具后,隐藏的依赖项也将被弃用:
[[deprecated]]
void hiddenDependency();
非常感谢您的帮助! 最佳答案
是的,您可以使用像Clang这样的编译器作为库来编写工具。
粗略地讲,您会走Clang给您的树找到功能/方法主体。在每个文件中,检查是否有对OldApi
或其成员的引用。如果是这样,请将属性添加到函数/方法中并输出结果树。
如果您也需要弃用这些功能的用户,则可以根据需要递归应用它。
从概念上讲很简单,但是如果您从未编写过这样的工具,则可能需要一段时间。即使有经验,您通常也需要花费大量时间来修改许多方法,以对此方法进行修改。
话虽如此,正如其他人指出的那样,这个问题很奇怪。弃用某些东西时,通常需要在调用者/用户中替换那种,而不是弃用所有用户。
关于c++ - 隐藏的依赖项的继承属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63303166/