Skip to content

Commit e175269

Browse files
committed
Added fixes for brace sniffs
1 parent 8eeee07 commit e175269

File tree

2 files changed

+78
-7
lines changed

2 files changed

+78
-7
lines changed

CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionClosingBraceSpaceSniff.php

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,15 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
8080
// right next to each other.
8181
if ($tokens[$stackPtr]['scope_closer'] !== ($tokens[$stackPtr]['scope_opener'] + 1)) {
8282
$error = 'The opening and closing braces of empty functions must be directly next to each other; e.g., function () {}';
83-
$phpcsFile->addError($error, $closeBrace, 'SpacingBetween');
83+
$fix = $phpcsFile->addFixableError($error, $closeBrace, 'SpacingBetween');
84+
if ($fix === true && $phpcsFile->fixer->enabled === true) {
85+
$phpcsFile->fixer->beginChangeset();
86+
for ($i = ($tokens[$stackPtr]['scope_opener'] + 1); $i < $closeBrace; $i++) {
87+
$phpcsFile->fixer->replaceToken($i, '');
88+
}
89+
90+
$phpcsFile->fixer->endChangeset();
91+
}
8492
}
8593

8694
return;
@@ -94,11 +102,29 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
94102
// Nested function.
95103
if ($found < 0) {
96104
$error = 'Closing brace of nested function must be on a new line';
97-
$phpcsFile->addError($error, $closeBrace, 'ContentBeforeClose');
105+
$fix = $phpcsFile->addFixableError($error, $closeBrace, 'ContentBeforeClose');
106+
if ($fix === true && $phpcsFile->fixer->enabled === true) {
107+
$phpcsFile->fixer->addNewlineBefore($closeBrace);
108+
}
98109
} else if ($found > 0) {
99110
$error = 'Expected 0 blank lines before closing brace of nested function; %s found';
100111
$data = array($found);
101-
$phpcsFile->addError($error, $closeBrace, 'SpacingBeforeNestedClose', $data);
112+
$fix = $phpcsFile->addFixableError($error, $closeBrace, 'SpacingBeforeNestedClose', $data);
113+
114+
if ($fix === true && $phpcsFile->fixer->enabled === true) {
115+
$phpcsFile->fixer->beginChangeset();
116+
for ($i = ($prevContent + 1); $i < $closeBrace; $i++) {
117+
// Try and maintain indentation.
118+
if ($tokens[$i]['line'] === $braceLine) {
119+
break;
120+
}
121+
122+
$phpcsFile->fixer->replaceToken($i, '');
123+
}
124+
125+
$phpcsFile->fixer->addNewlineBefore($i);
126+
$phpcsFile->fixer->endChangeset();
127+
}
102128
}
103129
} else {
104130
if ($found !== 1) {

CodeSniffer/Standards/Squiz/Sniffs/WhiteSpace/FunctionOpeningBraceSpaceSniff.php

Lines changed: 49 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,20 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
8888
if ($found > 0) {
8989
$error = 'Expected 0 blank lines after opening function brace; %s found';
9090
$data = array($found);
91-
$phpcsFile->addError($error, $openBrace, 'SpacingAfter', $data);
91+
$fix = $phpcsFile->addFixableError($error, $openBrace, 'SpacingAfter', $data);
92+
if ($fix === true && $phpcsFile->fixer->enabled === true) {
93+
$phpcsFile->fixer->beginChangeset();
94+
for ($i = ($openBrace + 1); $i < $nextContent; $i++) {
95+
if ($tokens[$i]['line'] === $nextLine) {
96+
break;
97+
}
98+
99+
$phpcsFile->fixer->replaceToken($i, '');
100+
}
101+
102+
$phpcsFile->fixer->addNewline($openBrace);
103+
$phpcsFile->fixer->endChangeset();
104+
}
92105
}
93106

94107
if ($phpcsFile->tokenizerType === 'JS') {
@@ -101,19 +114,51 @@ public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
101114
if ($nestedFunction === true) {
102115
if ($lineDifference > 0) {
103116
$error = 'Opening brace should be on the same line as the function keyword';
104-
$phpcsFile->addError($error, $openBrace, 'SpacingAfterNested');
117+
$fix = $phpcsFile->addFixableError($error, $openBrace, 'SpacingAfterNested');
118+
if ($fix === true && $phpcsFile->fixer->enabled === true) {
119+
$phpcsFile->fixer->beginChangeset();
120+
for ($i = ($openBrace - 1); $i > $stackPtr; $i--) {
121+
if ($tokens[$i]['code'] !== T_WHITESPACE) {
122+
break;
123+
}
124+
125+
$phpcsFile->fixer->replaceToken($i, '');
126+
}
127+
128+
$phpcsFile->fixer->addContentBefore($openBrace, ' ');
129+
$phpcsFile->fixer->endChangeset();
130+
}
105131
}
106132
} else {
107133
if ($lineDifference === 0) {
108134
$error = 'Opening brace should be on a new line';
109-
$phpcsFile->addError($error, $openBrace, 'ContentBefore');
135+
$fix = $phpcsFile->addFixableError($error, $openBrace, 'ContentBefore');
136+
if ($fix === true && $phpcsFile->fixer->enabled === true) {
137+
$phpcsFile->fixer->addNewlineBefore($openBrace);
138+
}
139+
110140
return;
111141
}
112142

113143
if ($lineDifference > 1) {
114144
$error = 'Opening brace should be on the line after the declaration; found %s blank line(s)';
115145
$data = array(($lineDifference - 1));
116-
$phpcsFile->addError($error, $openBrace, 'SpacingBefore', $data);
146+
$fix = $phpcsFile->addError($error, $openBrace, 'SpacingBefore', $data);
147+
148+
if ($fix === true && $phpcsFile->fixer->enabled === true) {
149+
$phpcsFile->fixer->beginChangeset();
150+
for ($i = ($openBrace - 1); $i > $stackPtr; $i--) {
151+
if ($tokens[$i]['code'] !== T_WHITESPACE) {
152+
break;
153+
}
154+
155+
$phpcsFile->fixer->replaceToken($i, '');
156+
}
157+
158+
$phpcsFile->fixer->addNewlineBefore($openBrace);
159+
$phpcsFile->fixer->endChangeset();
160+
}
161+
117162
return;
118163
}
119164
}//end if

0 commit comments

Comments
 (0)