我即将提交一个丑陋的临时黑客,以便在我们等待外部资源得到修复时解决阻塞问题。除了用一个大的可怕的注释和一堆FIXME来标记它之外,我希望编译器抛出一条明显的警告消息作为提醒,这样我们就不会忘记删除它。例如,如下所示:
[javac] com.foo.Hacky.java:192: warning: FIXME temporary hack to work around library bug, remove me when library is fixed!
有没有一种方法可以用我选择的消息引起有意的编译器警告?如果做不到这一点,那么添加到代码中抛出现有警告的最简单方法是什么呢?可能会在有问题的行上使用字符串中的消息,以便在警告消息中打印出来?
编辑:不推荐使用的标签似乎对我没有任何帮助:
/**
* @deprecated "Temporary hack to work around remote server quirks"
*/
@Deprecated
private void doSomeHackyStuff() { ... }
在eclipse或sun javac 1.6 (从ant script运行)中没有编译器或运行时错误,而且它肯定是在执行函数。
发布于 2015-01-10 08:02:27
我写了一个带注释的库:Lightweight Javac @Warning Annotation
使用方法非常简单:
// some code...
@Warning("This method should be refactored")
public void someCodeWhichYouNeedAtTheMomentButYouWantToRefactorItLater() {
// bad stuff going on here...
}
编译器将在您的文本中抛出警告消息
发布于 2009-11-18 07:30:23
如何将方法或类标记为@Deprecated?docs here。请注意,同时有@Deprecated和@deprecated大写的D版本是注释,小写的d是javadoc版本。javadoc版本允许您指定一个任意字符串来解释所发生的事情。但编译器不需要在看到它时发出警告(尽管许多人这样做了)。注释应该总是会导致警告,尽管我不认为您可以对其添加解释。
下面是我刚刚测试的代码: Sample.java包含:
public class Sample {
@Deprecated
public static void foo() {
System.out.println("I am a hack");
}
}
SampleCaller.java包含:
public class SampleCaller{
public static void main(String [] args) {
Sample.foo();
}
}
当我运行"javac Sample.java SampleCaller.java“时,我得到以下输出:
Note: SampleCaller.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
我使用的是sun的javac 1.6。如果你想要一个诚实的警告,而不仅仅是一个笔记,使用-Xlint选项。也许这会通过Ant正确地渗透出来。
发布于 2017-01-27 17:08:14
如果您使用的是IntelliJ。您可以转到: Preferences>Editor>TODO并添加"\bhack.b*“或任何其他模式。
如果你写了一个像// HACK: temporary fix to work around server issues
这样的评论
然后,在TODO工具窗口中,它将在编辑时与所有其他定义的模式一起很好地显示出来。
https://stackoverflow.com/questions/1752607
复制相似问题