public function FormAlterDocSniff::processFunction in Coder 8.2
Same name and namespace in other branches
- 8.3 coder_sniffer/DrupalPractice/Sniffs/FunctionDefinitions/FormAlterDocSniff.php \DrupalPractice\Sniffs\FunctionDefinitions\FormAlterDocSniff::processFunction()
- 8.3.x coder_sniffer/DrupalPractice/Sniffs/FunctionDefinitions/FormAlterDocSniff.php \DrupalPractice\Sniffs\FunctionDefinitions\FormAlterDocSniff::processFunction()
Process this function definition.
Parameters
\PHP_CodeSniffer\Files\File $phpcsFile The file being scanned.:
int $stackPtr The position of the function name: in the stack.
int $functionPtr The position of the function keyword: in the stack.
Return value
void
Overrides FunctionDefinition::processFunction
File
- coder_sniffer/
DrupalPractice/ Sniffs/ FunctionDefinitions/ FormAlterDocSniff.php, line 39
Class
- FormAlterDocSniff
- Checks that the comment "Implements hook_form_alter()." actually matches the function signature.
Namespace
DrupalPractice\Sniffs\FunctionDefinitionsCode
public function processFunction(File $phpcsFile, $stackPtr, $functionPtr) {
$tokens = $phpcsFile
->getTokens();
$docCommentEnd = $phpcsFile
->findPrevious(T_WHITESPACE, $functionPtr - 1, null, true);
// If there is no doc comment there is nothing we can check.
if ($docCommentEnd === false || $tokens[$docCommentEnd]['code'] !== T_DOC_COMMENT_CLOSE_TAG) {
return;
}
$commentLine = $docCommentEnd - 1;
$commentFound = false;
while ($tokens[$commentLine]['code'] !== T_DOC_COMMENT_OPEN_TAG) {
if (strpos($tokens[$commentLine]['content'], 'Implements hook_form_alter().') === 0) {
$commentFound = true;
break;
}
$commentLine--;
}
if ($commentFound === false) {
return;
}
$projectName = Project::getName($phpcsFile);
if ($projectName === false) {
return;
}
if ($tokens[$stackPtr]['content'] !== $projectName . '_form_alter') {
$warning = 'Doc comment indicates hook_form_alter() but function signature is "%s" instead of "%s". Did you mean hook_form_FORM_ID_alter()?';
$data = array(
$tokens[$stackPtr]['content'],
$projectName . '_form_alter',
);
$phpcsFile
->addWarning($warning, $commentLine, 'Different', $data);
}
}