Index: trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 11738)
+++ trunk/src/org/openstreetmap/josm/actions/MergeLayerAction.java	(revision 11739)
@@ -42,5 +42,5 @@
         if (targetLayer == null)
             return;
-        final Object actionName = MergeLayerAction.this.getValue(NAME);
+        final Object actionName = getValue(NAME);
         Main.worker.submit(() -> {
                 final long start = System.currentTimeMillis();
Index: trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java	(revision 11738)
+++ trunk/src/org/openstreetmap/josm/data/validation/tests/MultipolygonTest.java	(revision 11739)
@@ -204,7 +204,5 @@
             if (area != null) {
                 for (Way wInner : polygon.getInnerWays()) {
-                    AreaElement areaInner = ElemStyles.getAreaElemStyle(wInner, false);
-
-                    if (areaInner != null && area.equals(areaInner)) {
+                    if (area.equals(ElemStyles.getAreaElemStyle(wInner, false))) {
                         errors.add(TestError.builder(this, Severity.OTHER, INNER_STYLE_MISMATCH)
                                 .message(tr("With the currently used mappaint style the style for inner way equals the multipolygon style"))
Index: trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java	(revision 11738)
+++ trunk/src/org/openstreetmap/josm/gui/JosmUserIdentityManager.java	(revision 11739)
@@ -239,5 +239,5 @@
      */
     public boolean isCurrentUser(String username) {
-        return username != null && this.userName != null && this.userName.equals(username);
+        return this.userName != null && this.userName.equals(username);
     }
 
Index: trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java
===================================================================
--- trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 11738)
+++ trunk/src/org/openstreetmap/josm/gui/layer/geoimage/CorrelateGpxWithImages.java	(revision 11739)
@@ -271,5 +271,5 @@
                 for (int i = gpxLst.size() - 1; i >= 0; i--) {
                     GpxDataWrapper wrapper = gpxLst.get(i);
-                    if (wrapper.file != null && sel.equals(wrapper.file)) {
+                    if (sel.equals(wrapper.file)) {
                         cbGpx.setSelectedIndex(i);
                         if (!sel.getName().equals(wrapper.name)) {
Index: trunk/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java	(revision 11738)
+++ trunk/src/org/openstreetmap/josm/tools/bugreport/ReportedException.java	(revision 11739)
@@ -228,5 +228,5 @@
     private static String makeCollectionNice(Collection<?> value) {
         int lines = 0;
-        StringBuilder str = new StringBuilder();
+        StringBuilder str = new StringBuilder(32);
         for (Object e : value) {
             str.append("\n    - ");
@@ -246,5 +246,5 @@
     public String toString() {
         return "ReportedException [thread=" + caughtOnThread + ", exception=" + getCause()
-                + ", methodWarningFrom=" + methodWarningFrom + "]";
+                + ", methodWarningFrom=" + methodWarningFrom + ']';
     }
 
Index: trunk/tools/pmd/josm-ruleset.xml
===================================================================
--- trunk/tools/pmd/josm-ruleset.xml	(revision 11738)
+++ trunk/tools/pmd/josm-ruleset.xml	(revision 11739)
@@ -22,10 +22,26 @@
   	<exclude name="MethodArgumentCouldBeFinal"/>
   </rule>
-  <rule ref="rulesets/java/strictexception.xml"/>
-  <rule ref="rulesets/java/strings.xml"/>
-  <rule ref="rulesets/java/typeresolution.xml"/>
+  <rule ref="rulesets/java/strictexception.xml"/> -->
+  <rule ref="rulesets/java/strings.xml">
+  	<exclude name="AvoidDuplicateLiterals"/>
+  	<exclude name="ConsecutiveLiteralAppends"/>
+  	<exclude name="AvoidStringBufferField"/>
+  	<exclude name="StringToString"/>
+  	<exclude name="UselessStringValueOf"/>
+  </rule>
+  <rule ref="rulesets/java/typeresolution.xml">
+  	<exclude name="LooseCoupling"/>
+  	<exclude name="SignatureDeclareThrowsException"/>
+  </rule>
+  <rule ref="rulesets/java/typeresolution.xml/SignatureDeclareThrowsException">
+    <properties>
+        <property name="violationSuppressXPath" value="//MethodDeclaration/../Annotation/MarkerAnnotation/Name[@Image='Override']"/>
+        <property name="IgnoreJUnitCompletely" value="true"/>
+    </properties>
+  </rule>
   <rule ref="rulesets/java/unnecessary.xml">
   	<exclude name="UselessParentheses"/>
-  </rule> -->
+  	<exclude name="UselessOverridingMethod"/>
+  </rule>
   <rule ref="rulesets/java/unusedcode.xml">
   	<exclude name="UnusedFormalParameter"/>
