|
17 | 17 | use Symfony\Component\Console\Input\InputInterface; |
18 | 18 | use function array_merge; |
19 | 19 | use function count; |
| 20 | +use function fclose; |
| 21 | +use function feof; |
| 22 | +use function fgets; |
| 23 | +use function fopen; |
20 | 24 | use function hash_file; |
21 | 25 | use function is_file; |
22 | 26 | use function memory_get_peak_usage; |
@@ -233,20 +237,33 @@ private function runAnalyser( |
233 | 237 | $errorOutput->getStyle()->progressAdvance($allAnalysedFilesCount - $filesCount); |
234 | 238 | } else { |
235 | 239 | $startTime = null; |
236 | | - $preFileCallback = static function (string $file) use ($stdOutput, &$startTime): void { |
| 240 | + $linesOfCode = null; |
| 241 | + $preFileCallback = static function (string $file) use ($stdOutput, &$startTime, &$linesOfCode): void { |
237 | 242 | $stdOutput->writeLineFormatted($file); |
238 | 243 | $startTime = microtime(true); |
| 244 | + $count = 0; |
| 245 | + $handle = @fopen($file, 'r'); |
| 246 | + if ($handle === false) { |
| 247 | + return; |
| 248 | + } |
| 249 | + |
| 250 | + while (!feof($handle)) { |
| 251 | + fgets($handle); |
| 252 | + $count++; |
| 253 | + } |
| 254 | + fclose($handle); |
| 255 | + $linesOfCode = $count; |
239 | 256 | }; |
240 | 257 | $postFileCallback = null; |
241 | 258 | if ($stdOutput->isDebug()) { |
242 | 259 | $previousMemory = memory_get_peak_usage(true); |
243 | | - $postFileCallback = static function () use ($stdOutput, &$previousMemory, &$startTime): void { |
| 260 | + $postFileCallback = static function () use ($stdOutput, &$previousMemory, &$startTime, &$linesOfCode): void { |
244 | 261 | if ($startTime === null) { |
245 | 262 | throw new ShouldNotHappenException(); |
246 | 263 | } |
247 | 264 | $currentTotalMemory = memory_get_peak_usage(true); |
248 | 265 | $elapsedTime = microtime(true) - $startTime; |
249 | | - $stdOutput->writeLineFormatted(sprintf('--- consumed %s, total %s, took %.2f s', BytesHelper::bytes($currentTotalMemory - $previousMemory), BytesHelper::bytes($currentTotalMemory), $elapsedTime)); |
| 266 | + $stdOutput->writeLineFormatted(sprintf('--- consumed %s, total %s, took %.2f s, %.3f LoC/s', BytesHelper::bytes($currentTotalMemory - $previousMemory), BytesHelper::bytes($currentTotalMemory), $elapsedTime, $linesOfCode / $elapsedTime)); |
250 | 267 | $previousMemory = $currentTotalMemory; |
251 | 268 | }; |
252 | 269 | } |
|
0 commit comments