Skip to content
Snippets Groups Projects
Unverified Commit e3c6e118 authored by Jonathan Smith's avatar Jonathan Smith Committed by GitHub
Browse files

fix(Depreacted): Improve fixer for deprecated @see URL (#3057988 by jonathan1055)

parent b9da11fe
Branches
Tags
No related merge requests found
......@@ -193,7 +193,7 @@ class DeprecatedSniff implements Sniff
// The next tag in this comment block after @deprecated must be @see.
$seeTag = $phpcsFile->findNext(T_DOC_COMMENT_TAG, ($stackPtr + 1), $commentEnd, false, '@see');
if ($seeTag === false) {
$error = 'Each @deprecated tag must have a @see tag immediately following it.';
$error = 'Each @deprecated tag must have a @see tag immediately following it';
$phpcsFile->addError($error, $stackPtr, 'DeprecatedMissingSeeTag');
return;
}
......@@ -210,12 +210,17 @@ class DeprecatedSniff implements Sniff
}
// Allow for the alternative 'node' or 'project/aaa/issues' format.
preg_match('[^http(s*)://www.drupal.org/(node|project/\w+/issues)/(\d+)(\.*)$]', $crLink, $matches);
preg_match('[^http(s*)://www.drupal.org/(node|project/\w+/issues)/(\d+)([\.\?\;!]*)$]', $crLink, $matches);
if (isset($matches[4]) === true && empty($matches[4]) === false) {
// If matches[4] is not blank it means that the url is correct but
// it ends with a period. This is covered by the generic fixable
// sniff FunctionCommentSniff.SeePunctuation so allow that sniff to
// report it (and fix it).
// If matches[4] is not blank it means that the url is OK but it
// ends with punctuation. This is a common and fixable mistake.
$error = "The @see url '%s' should not end with punctuation";
$fix = $phpcsFile->addFixableError($error, $string, 'DeprecatedPeriodAfterSeeUrl', [$crLink]);
if ($fix === true) {
// Remove all of the the trailing punctuation.
$content = substr($crLink, 0, -(strlen($matches[4])));
$phpcsFile->fixer->replaceToken($string, $content);
}//end if
} else if (empty($matches) === true) {
$error = "The @see url '%s' does not match the standard: http(s)://www.drupal.org/node/n or http(s)://www.drupal.org/project/aaa/issues/n";
$phpcsFile->addWarning($error, $seeTag, 'DeprecatedWrongSeeUrlFormat', [$crLink]);
......
......@@ -93,10 +93,10 @@ function w() {
*/
/**
* This block also has incorrect basic layout and is fixable.
* Incorrect text and the url has trailing punctuation. Both are fixable.
*
* @deprecated as of 8.8.3-dev, scheduled for removal in DRUPAL 9
* It has 'as of' not 'in', missing word 'drupal', has -dev in first version,
* has 'removal', upper-case 'drupal' and short second version.
* @see http://www.drupal.org/node/123
* @see http://www.drupal.org/node/123?.
*/
......@@ -93,7 +93,7 @@ function w() {
*/
/**
* This block also has incorrect basic layout and is fixable.
* Incorrect text and the url has trailing punctuation. Both are fixable.
*
* @deprecated in drupal:8.8.3 and is removed from drupal:9.0.0.
* It has 'as of' not 'in', missing word 'drupal', has -dev in first version,
......
......@@ -27,15 +27,17 @@ class DeprecatedUnitTest extends CoderSniffUnitTest
{
return [
// Basic layout is wrong. Missing see url.
24 => 2,
24 => 2,
// No details given, check that the test gives two errors.
75 => 2,
75 => 2,
// Layout OK but missing the extra info.
81 => 1,
81 => 1,
// Text layout is wrong but fixable.
89 => 1,
89 => 1,
// Text layout is wrong but fixable.
98 => 1,
98 => 1,
// See Url has trailing punctuation which is fixable.
101 => 1,
];
}//end getErrorList()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment