首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何故意造成自定义java编译器的警告消息?

如何故意造成自定义java编译器的警告消息?
EN

Stack Overflow用户
提问于 2009-11-18 07:27:35
回答 5查看 36.5K关注 0票数 87

我即将提交一个丑陋的临时黑客,以便在我们等待外部资源得到修复时解决阻塞问题。除了用一个大的可怕的注释和一堆FIXME来标记它之外,我希望编译器抛出一条明显的警告消息作为提醒,这样我们就不会忘记删除它。例如,如下所示:

代码语言:javascript
复制
[javac] com.foo.Hacky.java:192: warning: FIXME temporary hack to work around library bug, remove me when library is fixed!

有没有一种方法可以用我选择的消息引起有意的编译器警告?如果做不到这一点,那么添加到代码中抛出现有警告的最简单方法是什么呢?可能会在有问题的行上使用字符串中的消息,以便在警告消息中打印出来?

编辑:不推荐使用的标签似乎对我没有任何帮助:

代码语言:javascript
复制
/**
 * @deprecated "Temporary hack to work around remote server quirks"
 */
@Deprecated
private void doSomeHackyStuff() { ... }

在eclipse或sun javac 1.6 (从ant script运行)中没有编译器或运行时错误,而且它肯定是在执行函数。

EN

回答 5

Stack Overflow用户

发布于 2015-01-10 08:02:27

我写了一个带注释的库:Lightweight Javac @Warning Annotation

使用方法非常简单:

代码语言:javascript
复制
// some code...

@Warning("This method should be refactored")
public void someCodeWhichYouNeedAtTheMomentButYouWantToRefactorItLater() {
    // bad stuff going on here...
}

编译器将在您的文本中抛出警告消息

票数 10
EN

Stack Overflow用户

发布于 2009-11-18 07:30:23

如何将方法或类标记为@Deprecated?docs here。请注意,同时有@Deprecated和@deprecated大写的D版本是注释,小写的d是javadoc版本。javadoc版本允许您指定一个任意字符串来解释所发生的事情。但编译器不需要在看到它时发出警告(尽管许多人这样做了)。注释应该总是会导致警告,尽管我不认为您可以对其添加解释。

下面是我刚刚测试的代码: Sample.java包含:

代码语言:javascript
复制
public class Sample {
    @Deprecated
    public static void foo() {
         System.out.println("I am a hack");
    }
}

SampleCaller.java包含:

代码语言:javascript
复制
public class SampleCaller{
     public static void main(String [] args) {
         Sample.foo();
     }
}

当我运行"javac Sample.java SampleCaller.java“时,我得到以下输出:

代码语言:javascript
复制
Note: SampleCaller.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

我使用的是sun的javac 1.6。如果你想要一个诚实的警告,而不仅仅是一个笔记,使用-Xlint选项。也许这会通过Ant正确地渗透出来。

票数 5
EN

Stack Overflow用户

发布于 2017-01-27 17:08:14

如果您使用的是IntelliJ。您可以转到: Preferences>Editor>TODO并添加"\bhack.b*“或任何其他模式。

如果你写了一个像// HACK: temporary fix to work around server issues这样的评论

然后,在TODO工具窗口中,它将在编辑时与所有其他定义的模式一起很好地显示出来。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1752607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档