annotate vendor/phpunit/php-code-coverage/src/Node/Directory.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 1fec387a4317
children
rev   line source
Chris@14 1 <?php
Chris@14 2 /*
Chris@14 3 * This file is part of the php-code-coverage package.
Chris@14 4 *
Chris@14 5 * (c) Sebastian Bergmann <sebastian@phpunit.de>
Chris@14 6 *
Chris@14 7 * For the full copyright and license information, please view the LICENSE
Chris@14 8 * file that was distributed with this source code.
Chris@14 9 */
Chris@14 10
Chris@14 11 namespace SebastianBergmann\CodeCoverage\Node;
Chris@14 12
Chris@14 13 use SebastianBergmann\CodeCoverage\InvalidArgumentException;
Chris@14 14
Chris@14 15 /**
Chris@14 16 * Represents a directory in the code coverage information tree.
Chris@14 17 */
Chris@14 18 class Directory extends AbstractNode implements \IteratorAggregate
Chris@14 19 {
Chris@14 20 /**
Chris@14 21 * @var AbstractNode[]
Chris@14 22 */
Chris@14 23 private $children = [];
Chris@14 24
Chris@14 25 /**
Chris@14 26 * @var Directory[]
Chris@14 27 */
Chris@14 28 private $directories = [];
Chris@14 29
Chris@14 30 /**
Chris@14 31 * @var File[]
Chris@14 32 */
Chris@14 33 private $files = [];
Chris@14 34
Chris@14 35 /**
Chris@14 36 * @var array
Chris@14 37 */
Chris@14 38 private $classes;
Chris@14 39
Chris@14 40 /**
Chris@14 41 * @var array
Chris@14 42 */
Chris@14 43 private $traits;
Chris@14 44
Chris@14 45 /**
Chris@14 46 * @var array
Chris@14 47 */
Chris@14 48 private $functions;
Chris@14 49
Chris@14 50 /**
Chris@14 51 * @var array
Chris@14 52 */
Chris@14 53 private $linesOfCode = null;
Chris@14 54
Chris@14 55 /**
Chris@14 56 * @var int
Chris@14 57 */
Chris@14 58 private $numFiles = -1;
Chris@14 59
Chris@14 60 /**
Chris@14 61 * @var int
Chris@14 62 */
Chris@14 63 private $numExecutableLines = -1;
Chris@14 64
Chris@14 65 /**
Chris@14 66 * @var int
Chris@14 67 */
Chris@14 68 private $numExecutedLines = -1;
Chris@14 69
Chris@14 70 /**
Chris@14 71 * @var int
Chris@14 72 */
Chris@14 73 private $numClasses = -1;
Chris@14 74
Chris@14 75 /**
Chris@14 76 * @var int
Chris@14 77 */
Chris@14 78 private $numTestedClasses = -1;
Chris@14 79
Chris@14 80 /**
Chris@14 81 * @var int
Chris@14 82 */
Chris@14 83 private $numTraits = -1;
Chris@14 84
Chris@14 85 /**
Chris@14 86 * @var int
Chris@14 87 */
Chris@14 88 private $numTestedTraits = -1;
Chris@14 89
Chris@14 90 /**
Chris@14 91 * @var int
Chris@14 92 */
Chris@14 93 private $numMethods = -1;
Chris@14 94
Chris@14 95 /**
Chris@14 96 * @var int
Chris@14 97 */
Chris@14 98 private $numTestedMethods = -1;
Chris@14 99
Chris@14 100 /**
Chris@14 101 * @var int
Chris@14 102 */
Chris@14 103 private $numFunctions = -1;
Chris@14 104
Chris@14 105 /**
Chris@14 106 * @var int
Chris@14 107 */
Chris@14 108 private $numTestedFunctions = -1;
Chris@14 109
Chris@14 110 /**
Chris@14 111 * Returns the number of files in/under this node.
Chris@14 112 *
Chris@14 113 * @return int
Chris@14 114 */
Chris@14 115 public function count()
Chris@14 116 {
Chris@14 117 if ($this->numFiles == -1) {
Chris@14 118 $this->numFiles = 0;
Chris@14 119
Chris@14 120 foreach ($this->children as $child) {
Chris@14 121 $this->numFiles += \count($child);
Chris@14 122 }
Chris@14 123 }
Chris@14 124
Chris@14 125 return $this->numFiles;
Chris@14 126 }
Chris@14 127
Chris@14 128 /**
Chris@14 129 * Returns an iterator for this node.
Chris@14 130 *
Chris@14 131 * @return \RecursiveIteratorIterator
Chris@14 132 */
Chris@14 133 public function getIterator()
Chris@14 134 {
Chris@14 135 return new \RecursiveIteratorIterator(
Chris@14 136 new Iterator($this),
Chris@14 137 \RecursiveIteratorIterator::SELF_FIRST
Chris@14 138 );
Chris@14 139 }
Chris@14 140
Chris@14 141 /**
Chris@14 142 * Adds a new directory.
Chris@14 143 *
Chris@14 144 * @param string $name
Chris@14 145 *
Chris@14 146 * @return Directory
Chris@14 147 */
Chris@14 148 public function addDirectory($name)
Chris@14 149 {
Chris@14 150 $directory = new self($name, $this);
Chris@14 151
Chris@14 152 $this->children[] = $directory;
Chris@14 153 $this->directories[] = &$this->children[\count($this->children) - 1];
Chris@14 154
Chris@14 155 return $directory;
Chris@14 156 }
Chris@14 157
Chris@14 158 /**
Chris@14 159 * Adds a new file.
Chris@14 160 *
Chris@14 161 * @param string $name
Chris@14 162 * @param array $coverageData
Chris@14 163 * @param array $testData
Chris@14 164 * @param bool $cacheTokens
Chris@14 165 *
Chris@14 166 * @return File
Chris@14 167 *
Chris@14 168 * @throws InvalidArgumentException
Chris@14 169 */
Chris@14 170 public function addFile($name, array $coverageData, array $testData, $cacheTokens)
Chris@14 171 {
Chris@14 172 $file = new File(
Chris@14 173 $name,
Chris@14 174 $this,
Chris@14 175 $coverageData,
Chris@14 176 $testData,
Chris@14 177 $cacheTokens
Chris@14 178 );
Chris@14 179
Chris@14 180 $this->children[] = $file;
Chris@14 181 $this->files[] = &$this->children[\count($this->children) - 1];
Chris@14 182
Chris@14 183 $this->numExecutableLines = -1;
Chris@14 184 $this->numExecutedLines = -1;
Chris@14 185
Chris@14 186 return $file;
Chris@14 187 }
Chris@14 188
Chris@14 189 /**
Chris@14 190 * Returns the directories in this directory.
Chris@14 191 *
Chris@14 192 * @return array
Chris@14 193 */
Chris@14 194 public function getDirectories()
Chris@14 195 {
Chris@14 196 return $this->directories;
Chris@14 197 }
Chris@14 198
Chris@14 199 /**
Chris@14 200 * Returns the files in this directory.
Chris@14 201 *
Chris@14 202 * @return array
Chris@14 203 */
Chris@14 204 public function getFiles()
Chris@14 205 {
Chris@14 206 return $this->files;
Chris@14 207 }
Chris@14 208
Chris@14 209 /**
Chris@14 210 * Returns the child nodes of this node.
Chris@14 211 *
Chris@14 212 * @return array
Chris@14 213 */
Chris@14 214 public function getChildNodes()
Chris@14 215 {
Chris@14 216 return $this->children;
Chris@14 217 }
Chris@14 218
Chris@14 219 /**
Chris@14 220 * Returns the classes of this node.
Chris@14 221 *
Chris@14 222 * @return array
Chris@14 223 */
Chris@14 224 public function getClasses()
Chris@14 225 {
Chris@14 226 if ($this->classes === null) {
Chris@14 227 $this->classes = [];
Chris@14 228
Chris@14 229 foreach ($this->children as $child) {
Chris@14 230 $this->classes = \array_merge(
Chris@14 231 $this->classes,
Chris@14 232 $child->getClasses()
Chris@14 233 );
Chris@14 234 }
Chris@14 235 }
Chris@14 236
Chris@14 237 return $this->classes;
Chris@14 238 }
Chris@14 239
Chris@14 240 /**
Chris@14 241 * Returns the traits of this node.
Chris@14 242 *
Chris@14 243 * @return array
Chris@14 244 */
Chris@14 245 public function getTraits()
Chris@14 246 {
Chris@14 247 if ($this->traits === null) {
Chris@14 248 $this->traits = [];
Chris@14 249
Chris@14 250 foreach ($this->children as $child) {
Chris@14 251 $this->traits = \array_merge(
Chris@14 252 $this->traits,
Chris@14 253 $child->getTraits()
Chris@14 254 );
Chris@14 255 }
Chris@14 256 }
Chris@14 257
Chris@14 258 return $this->traits;
Chris@14 259 }
Chris@14 260
Chris@14 261 /**
Chris@14 262 * Returns the functions of this node.
Chris@14 263 *
Chris@14 264 * @return array
Chris@14 265 */
Chris@14 266 public function getFunctions()
Chris@14 267 {
Chris@14 268 if ($this->functions === null) {
Chris@14 269 $this->functions = [];
Chris@14 270
Chris@14 271 foreach ($this->children as $child) {
Chris@14 272 $this->functions = \array_merge(
Chris@14 273 $this->functions,
Chris@14 274 $child->getFunctions()
Chris@14 275 );
Chris@14 276 }
Chris@14 277 }
Chris@14 278
Chris@14 279 return $this->functions;
Chris@14 280 }
Chris@14 281
Chris@14 282 /**
Chris@14 283 * Returns the LOC/CLOC/NCLOC of this node.
Chris@14 284 *
Chris@14 285 * @return array
Chris@14 286 */
Chris@14 287 public function getLinesOfCode()
Chris@14 288 {
Chris@14 289 if ($this->linesOfCode === null) {
Chris@14 290 $this->linesOfCode = ['loc' => 0, 'cloc' => 0, 'ncloc' => 0];
Chris@14 291
Chris@14 292 foreach ($this->children as $child) {
Chris@14 293 $linesOfCode = $child->getLinesOfCode();
Chris@14 294
Chris@14 295 $this->linesOfCode['loc'] += $linesOfCode['loc'];
Chris@14 296 $this->linesOfCode['cloc'] += $linesOfCode['cloc'];
Chris@14 297 $this->linesOfCode['ncloc'] += $linesOfCode['ncloc'];
Chris@14 298 }
Chris@14 299 }
Chris@14 300
Chris@14 301 return $this->linesOfCode;
Chris@14 302 }
Chris@14 303
Chris@14 304 /**
Chris@14 305 * Returns the number of executable lines.
Chris@14 306 *
Chris@14 307 * @return int
Chris@14 308 */
Chris@14 309 public function getNumExecutableLines()
Chris@14 310 {
Chris@14 311 if ($this->numExecutableLines == -1) {
Chris@14 312 $this->numExecutableLines = 0;
Chris@14 313
Chris@14 314 foreach ($this->children as $child) {
Chris@14 315 $this->numExecutableLines += $child->getNumExecutableLines();
Chris@14 316 }
Chris@14 317 }
Chris@14 318
Chris@14 319 return $this->numExecutableLines;
Chris@14 320 }
Chris@14 321
Chris@14 322 /**
Chris@14 323 * Returns the number of executed lines.
Chris@14 324 *
Chris@14 325 * @return int
Chris@14 326 */
Chris@14 327 public function getNumExecutedLines()
Chris@14 328 {
Chris@14 329 if ($this->numExecutedLines == -1) {
Chris@14 330 $this->numExecutedLines = 0;
Chris@14 331
Chris@14 332 foreach ($this->children as $child) {
Chris@14 333 $this->numExecutedLines += $child->getNumExecutedLines();
Chris@14 334 }
Chris@14 335 }
Chris@14 336
Chris@14 337 return $this->numExecutedLines;
Chris@14 338 }
Chris@14 339
Chris@14 340 /**
Chris@14 341 * Returns the number of classes.
Chris@14 342 *
Chris@14 343 * @return int
Chris@14 344 */
Chris@14 345 public function getNumClasses()
Chris@14 346 {
Chris@14 347 if ($this->numClasses == -1) {
Chris@14 348 $this->numClasses = 0;
Chris@14 349
Chris@14 350 foreach ($this->children as $child) {
Chris@14 351 $this->numClasses += $child->getNumClasses();
Chris@14 352 }
Chris@14 353 }
Chris@14 354
Chris@14 355 return $this->numClasses;
Chris@14 356 }
Chris@14 357
Chris@14 358 /**
Chris@14 359 * Returns the number of tested classes.
Chris@14 360 *
Chris@14 361 * @return int
Chris@14 362 */
Chris@14 363 public function getNumTestedClasses()
Chris@14 364 {
Chris@14 365 if ($this->numTestedClasses == -1) {
Chris@14 366 $this->numTestedClasses = 0;
Chris@14 367
Chris@14 368 foreach ($this->children as $child) {
Chris@14 369 $this->numTestedClasses += $child->getNumTestedClasses();
Chris@14 370 }
Chris@14 371 }
Chris@14 372
Chris@14 373 return $this->numTestedClasses;
Chris@14 374 }
Chris@14 375
Chris@14 376 /**
Chris@14 377 * Returns the number of traits.
Chris@14 378 *
Chris@14 379 * @return int
Chris@14 380 */
Chris@14 381 public function getNumTraits()
Chris@14 382 {
Chris@14 383 if ($this->numTraits == -1) {
Chris@14 384 $this->numTraits = 0;
Chris@14 385
Chris@14 386 foreach ($this->children as $child) {
Chris@14 387 $this->numTraits += $child->getNumTraits();
Chris@14 388 }
Chris@14 389 }
Chris@14 390
Chris@14 391 return $this->numTraits;
Chris@14 392 }
Chris@14 393
Chris@14 394 /**
Chris@14 395 * Returns the number of tested traits.
Chris@14 396 *
Chris@14 397 * @return int
Chris@14 398 */
Chris@14 399 public function getNumTestedTraits()
Chris@14 400 {
Chris@14 401 if ($this->numTestedTraits == -1) {
Chris@14 402 $this->numTestedTraits = 0;
Chris@14 403
Chris@14 404 foreach ($this->children as $child) {
Chris@14 405 $this->numTestedTraits += $child->getNumTestedTraits();
Chris@14 406 }
Chris@14 407 }
Chris@14 408
Chris@14 409 return $this->numTestedTraits;
Chris@14 410 }
Chris@14 411
Chris@14 412 /**
Chris@14 413 * Returns the number of methods.
Chris@14 414 *
Chris@14 415 * @return int
Chris@14 416 */
Chris@14 417 public function getNumMethods()
Chris@14 418 {
Chris@14 419 if ($this->numMethods == -1) {
Chris@14 420 $this->numMethods = 0;
Chris@14 421
Chris@14 422 foreach ($this->children as $child) {
Chris@14 423 $this->numMethods += $child->getNumMethods();
Chris@14 424 }
Chris@14 425 }
Chris@14 426
Chris@14 427 return $this->numMethods;
Chris@14 428 }
Chris@14 429
Chris@14 430 /**
Chris@14 431 * Returns the number of tested methods.
Chris@14 432 *
Chris@14 433 * @return int
Chris@14 434 */
Chris@14 435 public function getNumTestedMethods()
Chris@14 436 {
Chris@14 437 if ($this->numTestedMethods == -1) {
Chris@14 438 $this->numTestedMethods = 0;
Chris@14 439
Chris@14 440 foreach ($this->children as $child) {
Chris@14 441 $this->numTestedMethods += $child->getNumTestedMethods();
Chris@14 442 }
Chris@14 443 }
Chris@14 444
Chris@14 445 return $this->numTestedMethods;
Chris@14 446 }
Chris@14 447
Chris@14 448 /**
Chris@14 449 * Returns the number of functions.
Chris@14 450 *
Chris@14 451 * @return int
Chris@14 452 */
Chris@14 453 public function getNumFunctions()
Chris@14 454 {
Chris@14 455 if ($this->numFunctions == -1) {
Chris@14 456 $this->numFunctions = 0;
Chris@14 457
Chris@14 458 foreach ($this->children as $child) {
Chris@14 459 $this->numFunctions += $child->getNumFunctions();
Chris@14 460 }
Chris@14 461 }
Chris@14 462
Chris@14 463 return $this->numFunctions;
Chris@14 464 }
Chris@14 465
Chris@14 466 /**
Chris@14 467 * Returns the number of tested functions.
Chris@14 468 *
Chris@14 469 * @return int
Chris@14 470 */
Chris@14 471 public function getNumTestedFunctions()
Chris@14 472 {
Chris@14 473 if ($this->numTestedFunctions == -1) {
Chris@14 474 $this->numTestedFunctions = 0;
Chris@14 475
Chris@14 476 foreach ($this->children as $child) {
Chris@14 477 $this->numTestedFunctions += $child->getNumTestedFunctions();
Chris@14 478 }
Chris@14 479 }
Chris@14 480
Chris@14 481 return $this->numTestedFunctions;
Chris@14 482 }
Chris@14 483 }