diff --git a/coder_review/includes/coder_review_comment.inc b/coder_review/includes/coder_review_comment.inc
index 7d17d2e..ee37300 100644
--- a/coder_review/includes/coder_review_comment.inc
+++ b/coder_review/includes/coder_review_comment.inc
@@ -129,6 +129,13 @@ function coder_review_comment_reviews() {
       '#severity' => 'minor',
       '#case-sensitive' => TRUE,
     ),
+    array(
+      '#type' => 'callback',
+      '#source' => 'comment',
+      '#value' => '_coder_comment_return_separated',
+      '#warning' => '@return should be separated from the previous comment(s) by blank line',
+      '#severity' => 'minor',
+    ),
   );
   $review = array(
     '#title' => t('Drupal Commenting Standards'),
@@ -200,3 +207,18 @@ function _coder_review_comment_Id_warning() {
   );
 }
 
+/**
+ * param comment must be separated from previous comment(s) by blank line.
+ * @see 
+ */
+function _coder_comment_return_separated(&$coder_args, $review, $rule, $lines, &$results) {
+  foreach ($lines as $line => $comment) {
+    if (preg_match('/@return/', $comment[0])
+      // Previous line is comment?
+      && array_key_exists($line - 1, $lines)
+      // If yes, it must contain only asterisk left-padded with space.
+      && !preg_match('/^ \*$/', $lines[$line - 1][0])) {
+        _coder_error($results, $rule, _coder_severity_name($coder_args, $review, $rule), $line, $lines[$line - 1][0] . "\r\n" . $comment[0]);
+    }
+  }
+}
\ No newline at end of file
