Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F4087054
Source.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
10 KB
Referenced Files
None
Subscribers
None
Source.php
View Options
<?php
/**
* Source report for PHP_CodeSniffer.
*
* @author Greg Sherwood <gsherwood@squiz.net>
* @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
* @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
namespace
PHP_CodeSniffer\Reports
;
use
PHP_CodeSniffer\Files\File
;
use
PHP_CodeSniffer\Util\Timing
;
class
Source
implements
Report
{
/**
* Generate a partial report for a single processed file.
*
* Function should return TRUE if it printed or stored data about the file
* and FALSE if it ignored the file. Returning TRUE indicates that the file and
* its data should be counted in the grand totals.
*
* @param array<string, string|int|array> $report Prepared report data.
* See the {@see Report} interface for a detailed specification.
* @param \PHP_CodeSniffer\Files\File $phpcsFile The file being reported on.
* @param bool $showSources Show sources?
* @param int $width Maximum allowed line width.
*
* @return bool
*/
public
function
generateFileReport
(
$report
,
File
$phpcsFile
,
$showSources
=
false
,
$width
=
80
)
{
if
(
$report
[
'errors'
]
===
0
&&
$report
[
'warnings'
]
===
0
)
{
// Nothing to print.
return
false
;
}
$sources
=
[];
foreach
(
$report
[
'messages'
]
as
$lineErrors
)
{
foreach
(
$lineErrors
as
$colErrors
)
{
foreach
(
$colErrors
as
$error
)
{
$src
=
$error
[
'source'
];
if
(
isset
(
$sources
[
$src
])
===
false
)
{
$sources
[
$src
]
=
[
'fixable'
=>
(
int
)
$error
[
'fixable'
],
'count'
=>
1
,
];
}
else
{
$sources
[
$src
][
'count'
]++;
}
}
}
}
foreach
(
$sources
as
$source
=>
$data
)
{
echo
$source
.
'>>'
.
$data
[
'fixable'
].
'>>'
.
$data
[
'count'
].
PHP_EOL
;
}
return
true
;
}
//end generateFileReport()
/**
* Prints the source of all errors and warnings.
*
* @param string $cachedData Any partial report data that was returned from
* generateFileReport during the run.
* @param int $totalFiles Total number of files processed during the run.
* @param int $totalErrors Total number of errors found during the run.
* @param int $totalWarnings Total number of warnings found during the run.
* @param int $totalFixable Total number of problems that can be fixed.
* @param bool $showSources Show sources?
* @param int $width Maximum allowed line width.
* @param bool $interactive Are we running in interactive mode?
* @param bool $toScreen Is the report being printed to screen?
*
* @return void
*/
public
function
generate
(
$cachedData
,
$totalFiles
,
$totalErrors
,
$totalWarnings
,
$totalFixable
,
$showSources
=
false
,
$width
=
80
,
$interactive
=
false
,
$toScreen
=
true
)
{
$lines
=
explode
(
PHP_EOL
,
$cachedData
);
array_pop
(
$lines
);
if
(
empty
(
$lines
)
===
true
)
{
return
;
}
$sources
=
[];
$maxLength
=
0
;
foreach
(
$lines
as
$line
)
{
$parts
=
explode
(
'>>'
,
$line
);
$source
=
$parts
[
0
];
$fixable
=
(
bool
)
$parts
[
1
];
$count
=
$parts
[
2
];
if
(
isset
(
$sources
[
$source
])
===
false
)
{
if
(
$showSources
===
true
)
{
$parts
=
null
;
$sniff
=
$source
;
}
else
{
$parts
=
explode
(
'.'
,
$source
);
if
(
$parts
[
0
]
===
'Internal'
)
{
$parts
[
2
]
=
$parts
[
1
];
$parts
[
1
]
=
''
;
}
$parts
[
1
]
=
$this
->
makeFriendlyName
(
$parts
[
1
]);
$sniff
=
$this
->
makeFriendlyName
(
$parts
[
2
]);
if
(
isset
(
$parts
[
3
])
===
true
)
{
$name
=
$this
->
makeFriendlyName
(
$parts
[
3
]);
$name
[
0
]
=
strtolower
(
$name
[
0
]);
$sniff
.=
' '
.
$name
;
unset
(
$parts
[
3
]);
}
$parts
[
2
]
=
$sniff
;
}
//end if
$maxLength
=
max
(
$maxLength
,
strlen
(
$sniff
));
$sources
[
$source
]
=
[
'count'
=>
$count
,
'fixable'
=>
$fixable
,
'parts'
=>
$parts
,
];
}
else
{
$sources
[
$source
][
'count'
]
+=
$count
;
}
//end if
}
//end foreach
if
(
$showSources
===
true
)
{
$width
=
min
(
$width
,
(
$maxLength
+
11
));
}
else
{
$width
=
min
(
$width
,
(
$maxLength
+
41
));
}
$width
=
max
(
$width
,
70
);
// Sort the data based on counts and source code.
$sourceCodes
=
array_keys
(
$sources
);
$counts
=
[];
foreach
(
$sources
as
$source
=>
$data
)
{
$counts
[
$source
]
=
$data
[
'count'
];
}
array_multisort
(
$counts
,
SORT_DESC
,
$sourceCodes
,
SORT_ASC
,
SORT_NATURAL
,
$sources
);
echo
PHP_EOL
.
"
\0
33[1mPHP CODE SNIFFER VIOLATION SOURCE SUMMARY
\0
33[0m"
.
PHP_EOL
;
echo
str_repeat
(
'-'
,
$width
).
PHP_EOL
.
"
\0
33[1m"
;
if
(
$showSources
===
true
)
{
if
(
$totalFixable
>
0
)
{
echo
' SOURCE'
.
str_repeat
(
' '
,
(
$width
-
15
)).
'COUNT'
.
PHP_EOL
;
}
else
{
echo
'SOURCE'
.
str_repeat
(
' '
,
(
$width
-
11
)).
'COUNT'
.
PHP_EOL
;
}
}
else
{
if
(
$totalFixable
>
0
)
{
echo
' STANDARD CATEGORY SNIFF'
.
str_repeat
(
' '
,
(
$width
-
44
)).
'COUNT'
.
PHP_EOL
;
}
else
{
echo
'STANDARD CATEGORY SNIFF'
.
str_repeat
(
' '
,
(
$width
-
40
)).
'COUNT'
.
PHP_EOL
;
}
}
echo
"
\0
33[0m"
.
str_repeat
(
'-'
,
$width
).
PHP_EOL
;
$fixableSources
=
0
;
if
(
$showSources
===
true
)
{
$maxSniffWidth
=
(
$width
-
7
);
}
else
{
$maxSniffWidth
=
(
$width
-
37
);
}
if
(
$totalFixable
>
0
)
{
$maxSniffWidth
-=
4
;
}
foreach
(
$sources
as
$source
=>
$sourceData
)
{
if
(
$totalFixable
>
0
)
{
echo
'['
;
if
(
$sourceData
[
'fixable'
]
===
true
)
{
echo
'x'
;
$fixableSources
++;
}
else
{
echo
' '
;
}
echo
'] '
;
}
if
(
$showSources
===
true
)
{
if
(
strlen
(
$source
)
>
$maxSniffWidth
)
{
$source
=
substr
(
$source
,
0
,
$maxSniffWidth
);
}
echo
$source
;
if
(
$totalFixable
>
0
)
{
echo
str_repeat
(
' '
,
(
$width
-
9
-
strlen
(
$source
)));
}
else
{
echo
str_repeat
(
' '
,
(
$width
-
5
-
strlen
(
$source
)));
}
}
else
{
$parts
=
$sourceData
[
'parts'
];
if
(
strlen
(
$parts
[
0
])
>
8
)
{
$parts
[
0
]
=
substr
(
$parts
[
0
],
0
,
((
strlen
(
$parts
[
0
])
-
8
)
*
-
1
));
}
echo
$parts
[
0
].
str_repeat
(
' '
,
(
10
-
strlen
(
$parts
[
0
])));
$category
=
$parts
[
1
];
if
(
strlen
(
$category
)
>
18
)
{
$category
=
substr
(
$category
,
0
,
((
strlen
(
$category
)
-
18
)
*
-
1
));
}
echo
$category
.
str_repeat
(
' '
,
(
20
-
strlen
(
$category
)));
$sniff
=
$parts
[
2
];
if
(
strlen
(
$sniff
)
>
$maxSniffWidth
)
{
$sniff
=
substr
(
$sniff
,
0
,
$maxSniffWidth
);
}
if
(
$totalFixable
>
0
)
{
echo
$sniff
.
str_repeat
(
' '
,
(
$width
-
39
-
strlen
(
$sniff
)));
}
else
{
echo
$sniff
.
str_repeat
(
' '
,
(
$width
-
35
-
strlen
(
$sniff
)));
}
}
//end if
echo
$sourceData
[
'count'
].
PHP_EOL
;
}
//end foreach
echo
str_repeat
(
'-'
,
$width
).
PHP_EOL
;
echo
"
\0
33[1m"
.
'A TOTAL OF '
.(
$totalErrors
+
$totalWarnings
).
' SNIFF VIOLATION'
;
if
((
$totalErrors
+
$totalWarnings
)
>
1
)
{
echo
'S'
;
}
echo
' WERE FOUND IN '
.
count
(
$sources
).
' SOURCE'
;
if
(
count
(
$sources
)
!==
1
)
{
echo
'S'
;
}
echo
"
\0
33[0m"
;
if
(
$totalFixable
>
0
)
{
echo
PHP_EOL
.
str_repeat
(
'-'
,
$width
).
PHP_EOL
;
echo
"
\0
33[1mPHPCBF CAN FIX THE $fixableSources MARKED SOURCES AUTOMATICALLY ($totalFixable VIOLATIONS IN TOTAL)
\0
33[0m"
;
}
echo
PHP_EOL
.
str_repeat
(
'-'
,
$width
).
PHP_EOL
.
PHP_EOL
;
if
(
$toScreen
===
true
&&
$interactive
===
false
)
{
Timing
::
printRunTime
();
}
}
//end generate()
/**
* Converts a camel caps name into a readable string.
*
* @param string $name The camel caps name to convert.
*
* @return string
*/
public
function
makeFriendlyName
(
$name
)
{
if
(
trim
(
$name
)
===
''
)
{
return
''
;
}
$friendlyName
=
''
;
$length
=
strlen
(
$name
);
$lastWasUpper
=
false
;
$lastWasNumeric
=
false
;
for
(
$i
=
0
;
$i
<
$length
;
$i
++)
{
if
(
is_numeric
(
$name
[
$i
])
===
true
)
{
if
(
$lastWasNumeric
===
false
)
{
$friendlyName
.=
' '
;
}
$lastWasUpper
=
false
;
$lastWasNumeric
=
true
;
}
else
{
$lastWasNumeric
=
false
;
$char
=
strtolower
(
$name
[
$i
]);
if
(
$char
===
$name
[
$i
])
{
// Lowercase.
$lastWasUpper
=
false
;
}
else
{
// Uppercase.
if
(
$lastWasUpper
===
false
)
{
$friendlyName
.=
' '
;
if
(
$i
<
(
$length
-
1
))
{
$next
=
$name
[(
$i
+
1
)];
if
(
strtolower
(
$next
)
===
$next
)
{
// Next char is lowercase so it is a word boundary.
$name
[
$i
]
=
strtolower
(
$name
[
$i
]);
}
}
}
$lastWasUpper
=
true
;
}
}
//end if
$friendlyName
.=
$name
[
$i
];
}
//end for
$friendlyName
=
trim
(
$friendlyName
);
$friendlyName
[
0
]
=
strtoupper
(
$friendlyName
[
0
]);
return
$friendlyName
;
}
//end makeFriendlyName()
}
//end class
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Aug 18 2026, 09:20 (6 w, 4 d ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
85/19/9cb54ef8c05fa89cf5ff1b4ccda7
Default Alt Text
Source.php (10 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment