我正在使用一份遗留的C代码,需要将其文档化为UML。目前没有立即使用UML图进行合成的要求,但未来有望朝这个方向发展。
现在,该代码具有许多在编译时可以启用或禁用的特性:
#if(FEATURE_X == ON)
deal_with_x();
#endif
由于在UML中无法区分编译时和运行时条件(是吗?),因此我最终使用相同的决策块来处理两者,这意味着我的图表实际上代表以下代码:
if(FEATURE_X == ON) {
deal_with_x();
}
虽然我希望当功能 X 被禁用时编译器会消除调用,但至少有两个原因使得代码并不完全相同:
deal_with_x()
必须被定义,即使功能 X 被禁用- 静态代码分析将抱怨无用代码
应该如何处理这种情况呢?是否有我不知道的 UML 功能可以帮助解决?还是应该为不同的配置创建单独的活动图(需要很多工作)?或者应该依赖编译器消除不必要的调用并避免使用预编译指令?
尽管我的问题是关于 C 代码和预编译指令的,但我可以看到在 C++ 模板中也可能出现相同的问题,特别是如果语言引入 static if
。
PrecompileConfigured
标签。您的意思是我可以在活动图块上类似地使用标签吗? - Dmitry Grigoryev