I'm trying to get pmd:check to be useful.
This means fixing all the PMD violations. To fix some would be a
refactor of reference algorithms which I do not want to start doing. So
I've opted for the easier fix of increasing the allowed complexity.
Some PMD cheks I had to disable were:
- AccessorMethodGeneration
This allows internal private classes to access private methods of the
outer class and vice versa. It could instead be fixed by changing to
package-private methods where appropriate.
- OnlyOneReturn
There are many code examples of fast exit from methods with multiple
return statements.
- BeanMembersShouldSerialize
I do not think we intend to have the classes as Serializable.
- DataflowAnomalyAnalysis
This rule is not very reliable [1]. It does not like a lot of the
algorithms in the code that are established.
For one violation in sampling it can either be suppressed, or fixed by
promoting a private class constructor to package-private. I think that
the promotion to a package private constructor is OK. It is for this class:
LargeMeanPoissonSampler.LargeMeanPoissonSamplerState
This class is used by the LargeMeanPoissonSamplerCache and is already
package-private. So making the constructor package private seems reasonable.
The options to suppress violations [2] are:
1. Use annotations
2. Use // NOPMD comment at the end of the offending line
3. Add suppression to the pmd configuration xml.
So not wanting to litter the code with comments and annotations I have
updated the PMD xml to exclude certain checks.
There does not appear to be a separate PMD exclusions file in the manner
of spotbugs. The exclusions performed at the configuration file use
regular expressions so can be configured. But it requires XPath and the
syntax for regular expressions doesn't work with examples I have tried.
I have fixed it with explicit 'or' statements for matching multiple
classes. I have not found out how to match a class and a method in the
same expression. This could be used to narrow the scope of exclusions.
All changes are in this PR [3]. Have a look and see if you don't agree
with the changes required.
Alex
[1] https://github.com/pmd/pmd/issues/873
[2] https://pmd.github.io/latest/pmd_userdocs_suppressing_warnings.html
[3] https://github.com/apache/commons-rng/pull/45
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org