7
votes

PMD and SonarQube a nice tools but I have problems trying to suppress PMD warnings.

We use Lombok a lot in our project, so many of the model classes have a: @SuppressWarnings("PMD.UnusedPrivateField") as an class-level annotations.

This works fine.

The problem is, that if I wan't to ignore one more rule, I would expect the following syntax: @SuppressWarnings(value = { "PMD.UnusedPrivateField", "PMD.SingularField" }) This looks like the correct syntax, also reading the implementation of the PMD annotation.

However, this seems not to works: None of the rules are now suppressed.

2
Are you using java.lang.SuppressWarnings? Maybe you accidentally imported the annotation from a different package.barfuin
I use the correct one. I also use the one for findbugs, then its like: @edu.umd.cs.findbugs.annotations.SuppressWarnings(value = { "EI_EXPOSE_REP2" }, justification = "Verified")Morten Frank
The FindBugs annotation will not work for PMD. Can you post a simplified example file to reproduce the problem?barfuin

2 Answers

10
votes

I would have expected this format (without the "value ="):

@SuppressWarnings({"PMD.UnusedPrivateField", "PMD.SingularField"})

Similar format is working for me in PMD 5.1.3 (although Eclipse complains about them not being supported).

2
votes

As @colbadhombre writes:

@SuppressWarnings({"PMD.UnusedPrivateField", "PMD.SingularField"})

does the trick.

Regarding Eclipse:
Open Window->Preferences->Java->Compiler->Errors/Warnings

  • "Unhandled token in '@SuppressWarnings':" can be set to Ignore
  • Likewise the "Unused '@SuppressWarnings' token" if the warnings are enabled