问题
我正在使用一个解析器生成器,它会创建一些丑陋的代码。因此,我的Eclipse项目有几十个警告来自生成的源文件。我知道我可以使用@SuppressWarning
annotation来抑制特定元素中的特定警告,但是当解析器生成器再次运行时,我手动添加的任何注释都将丢失。有没有办法配置Eclipse来抑制特定文件或目录的警告?
#1 热门回答(84 赞)
从版本3.8 M6开始,Eclipse(确切地说:JDT)具有内置功能。它可以通过项目的构建路径进行配置:项目属性> Java构建路径>编译器>源
宣布在这里:Eclipse 3.8 and 4.2 M6 - New and Noteworthy,被称为选择性地忽略来自源文件夹的错误/警告。这也是屏幕截图所在的位置。这是在之前链接的Bug 220928上开发的新功能。
#2 热门回答(20 赞)
有一个这样的票,Bug 220928,已经为Eclipse 3.8完成了。有关详细信息,请参阅this answer。
如果你坚持使用Eclipse 3.7或更低版本:用户"Marc"评论该票证创建(或至少链接)一个名为'warningcleaner'的插件,即comment 35。在等待将此功能集成到Eclipse中时,我正在使用它取得了很大的成功。
这真的很简单:
- 安装插件。
- 右键单击项目,然后选择"添加/删除生成的代码性质"。
- 打开项目设置(右键单击并选择"属性")。
- 打开"警告清洁"标签。
- 选择要忽略警告的源文件夹。
#3 热门回答(17 赞)
我通过使用maven regexp replace插件解决了这个问题 - 它没有解决原因,但治愈疼痛:
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.3.2</version>
<executions>
<execution>
<phase>prepare-package</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<includes>
<include>target/generated-sources/antlr/**/*.java</include>
</includes>
<regex>true</regex>
<regexFlags>
<regexFlag>MULTILINE</regexFlag>
</regexFlags>
<replacements>
<replacement>
<token>^public class</token>
<value>@SuppressWarnings("all") public class</value>
</replacement>
</replacements>
</configuration>
</plugin>
请注意,我没有设法使**符号起作用,因此你可能必须准确指定路径。
请参阅下面的评论,了解如何不生成重复的@SupressWarnings