Issue #4701: No error for a misplaced javadoc tag
diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java
index 2e0d95e..ca3aec8 100644
--- a/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java
+++ b/src/main/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheck.java
@@ -100,12 +100,12 @@
     public static final String MSG_DUPLICATE_TAG = "javadoc.duplicateTag";
 
     /** Compiled regexp to match Javadoc tags that take an argument. */
-    private static final Pattern MATCH_JAVADOC_ARG =
-            CommonUtils.createPattern("@(throws|exception|param)\\s+(\\S+)\\s+\\S*");
+    private static final Pattern MATCH_JAVADOC_ARG = CommonUtils.createPattern(
+            "^\\s*(?>\\*|\\/\\*\\*)?\\s*@(throws|exception|param)\\s+(\\S+)\\s+\\S*");
 
     /** Compiled regexp to match first part of multilineJavadoc tags. */
-    private static final Pattern MATCH_JAVADOC_ARG_MULTILINE_START =
-            CommonUtils.createPattern("@(throws|exception|param)\\s+(\\S+)\\s*$");
+    private static final Pattern MATCH_JAVADOC_ARG_MULTILINE_START = CommonUtils.createPattern(
+            "^\\s*(?>\\*|\\/\\*\\*)?\\s*@(throws|exception|param)\\s+(\\S+)\\s*$");
 
     /** Compiled regexp to look for a continuation of the comment. */
     private static final Pattern MATCH_JAVADOC_MULTILINE_CONT =
@@ -118,10 +118,10 @@
 
     /** Compiled regexp to match Javadoc tags with no argument. */
     private static final Pattern MATCH_JAVADOC_NOARG =
-            CommonUtils.createPattern("@(return|see)\\s+\\S");
+            CommonUtils.createPattern("^\\s*(?>\\*|\\/\\*\\*)?\\s*@(return|see)\\s+\\S");
     /** Compiled regexp to match first part of multilineJavadoc tags. */
     private static final Pattern MATCH_JAVADOC_NOARG_MULTILINE_START =
-            CommonUtils.createPattern("@(return|see)\\s*$");
+            CommonUtils.createPattern("^\\s*(?>\\*|\\/\\*\\*)?\\s*@(return|see)\\s*$");
     /** Compiled regexp to match Javadoc tags with no argument and {}. */
     private static final Pattern MATCH_JAVADOC_NOARG_CURLY =
             CommonUtils.createPattern("\\{\\s*@(inheritDoc)\\s*\\}");
diff --git a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java
index 1e3c28b..8cf4210 100644
--- a/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java
+++ b/src/test/java/com/puppycrawl/tools/checkstyle/checks/javadoc/JavadocMethodCheckTest.java
@@ -135,8 +135,10 @@
             "254:8: " + getCheckMessage(MSG_UNUSED_TAG, "@throws", "java.io.FileNotFoundException"),
             "256:28: " + getCheckMessage(MSG_EXPECTED_TAG, "@throws", "IOException"),
             "262:8: " + getCheckMessage(MSG_UNUSED_TAG, "@param", "aParam"),
-            "320:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
-            "329:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
+            "305: " + getCheckMessage(MSG_RETURN_EXPECTED),
+            "305:22: " + getCheckMessage(MSG_EXPECTED_TAG, "@param", "aParam"),
+            "328:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
+            "337:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
         };
 
         verify(checkConfig, getPath("InputJavadocMethodTags.java"), expected);
@@ -171,8 +173,10 @@
             "254:8: " + getCheckMessage(MSG_UNUSED_TAG, "@throws", "java.io.FileNotFoundException"),
             "256:28: " + getCheckMessage(MSG_EXPECTED_TAG, "@throws", "IOException"),
             "262:8: " + getCheckMessage(MSG_UNUSED_TAG, "@param", "aParam"),
-            "320:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
-            "329:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
+            "305: " + getCheckMessage(MSG_RETURN_EXPECTED),
+            "305:22: " + getCheckMessage(MSG_EXPECTED_TAG, "@param", "aParam"),
+            "328:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
+            "337:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
         };
         verify(checkConfig, getPath("InputJavadocMethodTags.java"), expected);
     }
@@ -287,8 +291,10 @@
             "179:8: " + getCheckMessage(MSG_UNUSED_TAG, "@throws", "ArrayStoreException"),
             "256:28: " + getCheckMessage(MSG_EXPECTED_TAG, "@throws", "IOException"),
             "262:8: " + getCheckMessage(MSG_UNUSED_TAG, "@param", "aParam"),
-            "320:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
-            "329:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
+            "305: " + getCheckMessage(MSG_RETURN_EXPECTED),
+            "305:22: " + getCheckMessage(MSG_EXPECTED_TAG, "@param", "aParam"),
+            "328:9: " + getCheckMessage(MSG_JAVADOC_MISSING),
+            "337:5: " + getCheckMessage(MSG_JAVADOC_MISSING),
         };
         verify(checkConfig, getPath("InputJavadocMethodTags.java"), expected);
     }
diff --git a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmethod/InputJavadocMethodTags.java b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmethod/InputJavadocMethodTags.java
index 1926f2d..0766afe 100644
--- a/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmethod/InputJavadocMethodTags.java
+++ b/src/test/resources/com/puppycrawl/tools/checkstyle/checks/javadoc/javadocmethod/InputJavadocMethodTags.java
@@ -297,6 +297,14 @@
 
         return 1;
     }
+
+    /**
+     * misplaced @param aParam
+     * misplaced @return something very important.
+     */
+    int method29(int aParam)
+    { return 0;
+    }
 }
 
 enum InputJavadocMethodTagsEnum