Index: src/org/openstreetmap/josm/data/validation/tests/SharpAngles.java
===================================================================
--- src/org/openstreetmap/josm/data/validation/tests/SharpAngles.java	(revision 15412)
+++ src/org/openstreetmap/josm/data/validation/tests/SharpAngles.java	(working copy)
@@ -15,6 +15,7 @@
 import org.openstreetmap.josm.data.osm.OsmPrimitive;
 import org.openstreetmap.josm.data.osm.Way;
 import org.openstreetmap.josm.data.osm.WaySegment;
+import org.openstreetmap.josm.data.preferences.sources.ValidatorPrefHelper;
 import org.openstreetmap.josm.data.validation.Severity;
 import org.openstreetmap.josm.data.validation.Test;
 import org.openstreetmap.josm.data.validation.TestError;
@@ -51,8 +52,7 @@
     @Override
     public void visit(Way way) {
         if (!way.isUsable()) return;
-        if (way.hasKey("highway") && !way.hasTag("area", "yes") &&
-                    !ignoreHighways.contains(way.get("highway"))) {
+        if (shouldBeTestedForSharpAngles(way)) {
             try {
                 checkWayForSharpAngles(way);
             } catch (Exception e) {
@@ -63,6 +63,16 @@
     }
 
     /**
+     * Check whether or not a way should be checked for sharp angles
+     * @param way The way that needs to be checked
+     * @return {@code true} if the way should be checked.
+     */
+    public boolean shouldBeTestedForSharpAngles(Way way) {
+        return (way.hasKey("highway") && !way.hasTag("area", "yes") && !way.hasKey("via_ferrata_scale") &&
+                !ignoreHighways.contains(way.get("highway")));
+    }
+
+    /**
      * Check nodes in a way for sharp angles
      * @param way A way to check for sharp angles
      */
@@ -108,11 +118,15 @@
     }
 
     private void createNearlyOverlappingError(double angle, Way way, OsmPrimitive primitive) {
-        TestError.Builder testError = TestError.builder(this, getSeverity(angle), SHARP_ANGLES)
-                .primitives(way)
-                .highlight(primitive)
-                .message(tr("Sharp angle"));
-        errors.add(testError.build());
+        Severity severity = getSeverity(angle);
+        if ((ValidatorPrefHelper.PREF_OTHER.get() || ValidatorPrefHelper.PREF_OTHER_UPLOAD.get()) || !severity.equals(Severity.OTHER)) {
+            int addCode = severity.equals(Severity.OTHER) ? 1 : 0;
+            TestError.Builder testError = TestError.builder(this, severity, SHARP_ANGLES + addCode)
+                    .primitives(way)
+                    .highlight(primitive)
+                    .message(tr("Sharp angle"));
+            errors.add(testError.build());
+        }
     }
 
     private Severity getSeverity(double angle) {
