我在这里看到了答案,您可以在Java中使用最终的静态const变量来防止代码段被编译。我对这种方法的关注是我很健忘。 :-(在检查代码之前,我可能会忘记将变量设置为false,这可能会对项目产生负面影响。
在C / C ++中,您可以指定可用于控制代码编译的环境宏。例如:
#if defined(_PROFILE)
Time startTime;
#endif
... run some code ...
#if defined(_PROFILE)
Time endTime;
std::cout << "Code took " << endTime - startTime << " seconds\n";
#endif
因此,如果有人专门定义了_PROFILE宏,可以在编译器的命令行中作为选项传递,并且没有意外检查的风险,则只能编译分析测试代码。
有没有办法在Java中模仿这个?
答案 0 :(得分:2)
您可以使用运行时属性。由于Java是动态编译的,因此具有相同的效果。
static final boolean PROFILE = Boolean.getBoolean("VictimZero.PROFILE");
long startTime;
if (PROFILE)
startTime = System.nanoTime();
... run some code ...
if (PROFILE) {
long enTime = System.nanoTime();
System.out.printf("Code took %.3f seconds%n", (endTime - startTime)/1e9);
}
你可以使用稍微hacky
static final boolean VICTIM_ZERO =
System.getProperty("user.name").equals("VictimZero");