Java 如何在特定于文件的基础上禁用Eclipse中的编译器警告?

Java 如何在特定于文件的基础上禁用Eclipse中的编译器警告?,java,eclipse,compiler-construction,compiler-warnings,Java,Eclipse,Compiler Construction,Compiler Warnings,在我的Eclipse项目中,有一些生成的.java文件需要用于SQLJ,我无法转移到单独的项目(由于管理开销)。这些文件也会定期重新生成,因此很遗憾,编辑它们是不可能的 不幸的是,这些文件生成了几百个java编译器警告,这些警告掩盖了我在实际可以编辑的文件上得到的有用警告 在Eclipse中是否有任何方法可以说忽略每个文件的所有警告?或者我可以屏蔽特定的子目录吗?一种方法是在源代码中添加@SuppressWarning(…)注释 另一种方法是将麻烦的代码移动到单独的Eclipse项目中,并使用每

在我的Eclipse项目中,有一些生成的.java文件需要用于SQLJ,我无法转移到单独的项目(由于管理开销)。这些文件也会定期重新生成,因此很遗憾,编辑它们是不可能的

不幸的是,这些文件生成了几百个java编译器警告,这些警告掩盖了我在实际可以编辑的文件上得到的有用警告


在Eclipse中是否有任何方法可以说忽略每个文件的所有警告?或者我可以屏蔽特定的子目录吗?

一种方法是在源代码中添加
@SuppressWarning(…)
注释

另一种方法是将麻烦的代码移动到单独的Eclipse项目中,并使用每个项目的编译器设置

编辑

当然,您可以使用适当的项目间依赖关系将代码划分为多个项目

如果不是,我会说你没有现实的选择。(但是如果您想要一些不现实的,您可以对生成的代码进行后期处理以添加注释,攻击Eclipse Java编译器以实现每个文件抑制,攻击Eclipse“Problems”视图以实现每个文件/目录的错误过滤等。)

根据Stephen的评论,您可以在此处找到“每个项目编译器设置选项”

项目->属性->Java编译器->错误/警告

启用特定于项目的设置

可以过滤eclipse中的“问题”视图;我总是将其设置为“仅在选定元素及其子元素上”。当然,这更像是一种变通方法,但它减少了将文件放在同一个项目中的影响。(请注意,即使必须将它们放在同一个项目中,也可以将它们保存在单独的源文件夹中)


编辑:要配置过滤器,请在问题视图的右上角找到带有工具提示“查看菜单”的向下箭头的图标。单击它,然后单击“配置内容”。

如果要隐藏类或方法上的警告,请参阅或上的Eclipse文档

例如:

@SuppressWarnings("unused")
public void foo() {
    String s;
}

确保文件位于
gen
文件夹下,该文件夹是所有生成的.java文件的典型主文件夹。然后在项目属性中的Java构建路径下,将该文件夹的忽略可选编译问题设置为


如果您的项目结构要求您的文件位于除
gen
以外的文件夹中,请将该文件夹添加到Java生成路径,以便您可以为其启用忽略可选编译问题的功能。

+1“每个项目的编译器设置”。学到了新东西!!是的,这很好。问题是SQLJ文件是定期新生成的(每当有人更改SQL时)。所以所有的@SuppressWarning(all)都消失了。也很好。问题是SQLJ文件在同一个项目中,许多警告对于其他文件很有用。我需要一个特定于文件的设置。
@SuppressWarning
的Javadoc对于理解如何使用它没有多大帮助。它缺少示例。关于
@SuppressWarning
的Eclipse文档更为详细。查看我自己的答案。我已尝试将问题视图筛选到工作集。“仅限选定元素及其子元素”实际上非常可爱!请澄清如何筛选问题视图。不明显,可爱但不够。不能同时隐藏包含“死代码”和“原始类型”的警告。除了在文件夹X中,您不能显示所有警告。非常有用。这似乎是OP的要求,我也需要。这是问题的答案我相信这也是OP问题的答案。为了在Maven项目中使用这种方法,我将所有生成的文件发送到src/main/gen,并使用Edwards解决方案。这应该是可以接受的答案,因为这可能是一种最佳实践(例如,Android当前使用gen源目录),我在Java构建路径下没有提到这个选项。我们讨论的是什么版本的Eclipse?这不起作用,因为文件是定期生成的。因此,每次我都必须手动将@SuppressWarning添加到数十个文件中。