Skip to content

Commit fcd781a

Browse files
author
Stefano Kowalke
committed
ConcatenationSpacingSniff could check for too many spaces
* added a warning if there are more than one spaces around concatenation operators. * add sniff documentation * updated documentation.html Fixes #41156
1 parent 60bbeb6 commit fcd781a

5 files changed

Lines changed: 94 additions & 6 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
<documentation title="ConcatenationSpacing">
2+
<standard>
3+
<![CDATA[
4+
This standard is about the spacing of concat strings
5+
]]>
6+
</standard>
7+
<standard>
8+
<![CDATA[
9+
<em>String concatenation</em> operators must be surrounded by spaces
10+
]]>
11+
</standard>
12+
<code_comparison>
13+
<code title="Valid: String concatenation operator surrounded by space">
14+
<![CDATA[
15+
$content = 'Hello '<em> </em>.<em> </em>'world!';
16+
]]>
17+
</code>
18+
<code title="Invalid: String concatenation operator is not surrounded by space">
19+
<![CDATA[
20+
$content = 'Hello '<em></em>.<em> </em>'world!';
21+
22+
$content = 'Hello '<em> </em>.<em></em>'world!';
23+
24+
$content = 'Hello '<em></em>.<em></em>'world!';
25+
]]>
26+
</code>
27+
</code_comparison>
28+
<standard>
29+
<![CDATA[
30+
<em>String concatenation</em> operators should be surrounded by only one space
31+
]]>
32+
</standard>
33+
<code_comparison>
34+
<code title="Valid: String concatenation operator surrounded by one space on every side">
35+
<![CDATA[
36+
$content = 'Hello '<em> </em>.<em> </em>'world!';
37+
]]>
38+
</code>
39+
<code title="Invalid: String concatenation operator surrounded by multiple spaces">
40+
<![CDATA[
41+
$content = 'Hello '<em> </em>.<em> </em>'world!';
42+
43+
$content = 'Hello '<em> </em>.<em> </em>'world!';
44+
]]>
45+
</code>
46+
</code_comparison>
47+
</documentation>

Sniffs/Strings/ConcatenationSpacingSniff.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,23 @@ public function register()
5858
public function process(PHP_CodeSniffer_File $phpcsFile, $stackPtr)
5959
{
6060
$tokens = $phpcsFile->getTokens();
61-
if ($tokens[($stackPtr - 1)]['code'] !== T_WHITESPACE
62-
|| $tokens[($stackPtr + 1)]['code'] !== T_WHITESPACE
61+
$prevToken = $tokens[($stackPtr - 1)];
62+
$nextToken = $tokens[($stackPtr + 1)];
63+
64+
if ($prevToken['code'] !== T_WHITESPACE
65+
|| $nextToken['code'] !== T_WHITESPACE
6366
) {
64-
$message = 'Concat operator must be surrounded by spaces';
65-
$phpcsFile->addError($message, $stackPtr, 'NoSpaceAroundConcat');
67+
$error = 'Concat operator must be surrounded by spaces. ';
68+
$phpcsFile->addError($error, $stackPtr, 'NoSpaceAroundConcat');
69+
6670
}
6771

72+
if (($prevToken['code'] === T_WHITESPACE && stristr($prevToken['content'], ' ') !== FALSE)
73+
|| ($nextToken['code'] === T_WHITESPACE && stristr($nextToken['content'], ' ') !== FALSE)
74+
) {
75+
$error = 'Concat operator should be surrounded by just one space';
76+
$phpcsFile->addWarning($error, $stackPtr, 'OnlyOneSpaceAroundConcat');
77+
}
6878
}//end process()
6979

7080

Tests/Strings/ConcatenationSpacingUnitTest.inc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,6 @@ $string = 'Hello' . $there . '. How are' . $you . $going . "today $okay";
55
$string = 'Hello'.$there;
66
$string = 'Hello'. $there;
77
$string = 'Hello' .$there;
8+
$string = 'Hello' . $there;
9+
$string = 'Hello' . $there;
810
?>

Tests/Strings/ConcatenationSpacingUnitTest.php

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,10 @@ public function getErrorList()
6161
*/
6262
public function getWarningList()
6363
{
64-
return array();
64+
return array(
65+
8 => 1,
66+
9 => 1,
67+
);
6568

6669
}
6770
}

documentation.html

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ <h1>TYPO3SniffPool Coding Standards</h1>
7373
<h2>Table of Contents</h2>
7474
<ul class="toc">
7575
<li><a href="#Switch-Declaration">Switch Declaration</a></li>
76+
<li><a href="#ConcatenationSpacing">ConcatenationSpacing</a></li>
7677
</ul>
7778
<a name="Switch-Declaration" />
7879
<h2>Switch Declaration</h2>
@@ -231,6 +232,31 @@ <h2>Switch Declaration</h2>
231232
<td class="code-comparison-code">switch&nbsp;($something)&nbsp;{</br><span class="code-comparison-highlight"></span></br>}</td>
232233
</tr>
233234
</table>
234-
<div class="tag-line">Documentation generated on Sun, 03 Nov 2013 15:05:51 +0100 by <a href="http://pear.php.net/package/PHP_CodeSniffer">PHP_CodeSniffer 1.4.6</a></div>
235+
<a name="ConcatenationSpacing" />
236+
<h2>ConcatenationSpacing</h2>
237+
<p class="text">This standard is about the spacing of concat strings</p>
238+
<p class="text"><em>String concatenation</em> operators must be surrounded by spaces</p>
239+
<table class="code-comparison">
240+
<tr>
241+
<td class="code-comparison-title">Valid: String concatenation operator surrounded by space</td>
242+
<td class="code-comparison-title">Invalid: String concatenation operator is not surrounded by space</td>
243+
</tr>
244+
<tr>
245+
<td class="code-comparison-code">$content&nbsp;&nbsp;=&nbsp;'Hello&nbsp;'<span class="code-comparison-highlight">&nbsp;</span>.<span class="code-comparison-highlight">&nbsp;</span>'world!';</td>
246+
<td class="code-comparison-code">$content&nbsp;&nbsp;=&nbsp;'Hello&nbsp;'<span class="code-comparison-highlight"></span>.<span class="code-comparison-highlight">&nbsp;</span>'world!';</br></br>$content&nbsp;&nbsp;=&nbsp;'Hello&nbsp;'<span class="code-comparison-highlight">&nbsp;</span>.<span class="code-comparison-highlight"></span>'world!';</br></br>$content&nbsp;&nbsp;=&nbsp;'Hello&nbsp;'<span class="code-comparison-highlight"></span>.<span class="code-comparison-highlight"></span>'world!';</td>
247+
</tr>
248+
</table>
249+
<p class="text"><em>String concatenation</em> operators should be surrounded by only one space</p>
250+
<table class="code-comparison">
251+
<tr>
252+
<td class="code-comparison-title">Valid: String concatenation operator surrounded by one space on every side</td>
253+
<td class="code-comparison-title">Invalid: String concatenation operator surrounded by multiple spaces</td>
254+
</tr>
255+
<tr>
256+
<td class="code-comparison-code">$content&nbsp;&nbsp;=&nbsp;'Hello&nbsp;'<span class="code-comparison-highlight">&nbsp;</span>.<span class="code-comparison-highlight">&nbsp;</span>'world!';</td>
257+
<td class="code-comparison-code">$content&nbsp;&nbsp;=&nbsp;'Hello&nbsp;'<span class="code-comparison-highlight">&nbsp;&nbsp;</span>.<span class="code-comparison-highlight">&nbsp;</span>'world!';</br></br>$content&nbsp;&nbsp;=&nbsp;'Hello&nbsp;'<span class="code-comparison-highlight">&nbsp;&nbsp;</span>.<span class="code-comparison-highlight">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'world!';</td>
258+
</tr>
259+
</table>
260+
<div class="tag-line">Documentation generated on Sun, 03 Nov 2013 23:19:45 +0100 by <a href="http://pear.php.net/package/PHP_CodeSniffer">PHP_CodeSniffer 1.4.6</a></div>
235261
</body>
236262
</html>

0 commit comments

Comments
 (0)