You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Removed misconfigured rule: LoosePackageCoupling cause: No packages or classes specified
{"type":"issue","check_name":"LawOfDemeter","description":"Potential violation of Law of Demeter (method chain calls)","content":{"body":"## LawOfDemeter\n\nSince: PMD 5.0\n\nPriority: Medium\n\nCategories: Style\n\nRemediation Points: 50000\n\nThe Law of Demeter is a simple rule, that says 'only talk to friends'. It helps to reduce coupling between classes or objects. See also the references: Andrew Hunt, David Thomas, and Ward Cunningham. The Pragmatic Programmer. From Journeyman to Master. Addison-Wesley Longman, Amsterdam, October 1999.; K.J. Lieberherr and I.M. Holland. Assuring good style for object-oriented programs. Software, IEEE, 6(5):38–48, 1989.; http://www.ccs.neu.edu/home/lieber/LoD.html; http://en.wikipedia.org/wiki/Law_of_Demeter\n\n### Example:\n\njava\n\n\npublic class Foo {\n /**\n * This example will result in two violations.\n */\n public void example(Bar b) {\n // this method call is ok, as b is a parameter of 'example'\n C c = b.getC();\n \n // this method call is a violation, as we are using c, which we got from B.\n // We should ask b directly instead, e.g. 'b.doItOnC();'\n c.doIt();\n \n // this is also a violation, just expressed differently as a method chain without temporary variables.\n b.getC().doIt();\n \n // a constructor call, not a method call.\n D d = new D();\n // this method call is ok, because we have create the new instance of D locally.\n d.doSomethingElse(); \n }\n}\n\n \n \n\n### PMD properties\n\nName | Value | Description\n--- | --- | ---\nviolationSuppressRegex | | Suppress violations with messages matching a regular expression\nviolationSuppressXPath | | Suppress violations on nodes which match a given relative XPath expression.\n"},"categories":["Style"],"location":{"path":"extensions/geode-modules-session-internal/src/main/java/org/apache/geode/modules/session/internal/common/AbstractSessionCache.java","lines":{"begin":72,"end":72}},"severity":"normal","remediation_points":50000}
Tried reproducing with the CLI, but am waiting for it to be updated with PMD's stable channel.
not sure if this is a PMD issue, or specific to the engine
Hey, @efueger! This rule is a bit tricky, I'd suffered with it before too.
It requires configuration, so you can't simply enable it with the string array approach.
To be able to use it, you need a rulset.xml well configured.
I have an example here just for that coupling ruleset. Attention to this part where you have to explicitly tell which packages/classes you allow/disallow coupling.
I personally don't use the rule.
Bug
Actual Behavior
When using the
"java-coupling"
rule, the PMD engine errors with the following error message:.codeclimate.yml
The text was updated successfully, but these errors were encountered: