Arbit - project tracking

PHP Depend

History

Diff

1061 1062 /PHP/Depend/Metrics/Dependency/Analyzer.php
242 242 {
243 243 $this->fireStartMethod($method);
244 244
245 - // Get context package uuid
246 - $pkgUUID = $method->getParent()->getPackage()->getUUID();
247 -
248 - // Traverse all dependencies
245 + $package = $method->getParent()->getPackage();
249 246 foreach ($method->getDependencies() as $dep) {
250 - // Get dependent package uuid
251 - $depPkgUUID = $dep->getPackage()->getUUID();
252 -
253 - // Skip if context and dependency are equal
254 - if ($depPkgUUID === $pkgUUID) {
255 - continue;
256 - }
257 -
258 - // Create a container for this dependency
259 - $this->initPackageMetric($dep->getPackage());
260 -
261 -
262 - if (!in_array($depPkgUUID, $this->_nodeMetrics[$pkgUUID][self::M_EFFERENT_COUPLING])) {
263 - $this->_nodeMetrics[$pkgUUID][self::M_EFFERENT_COUPLING][] = $depPkgUUID;
264 - $this->_nodeMetrics[$depPkgUUID][self::M_AFFERENT_COUPLING][] = $pkgUUID;
265 - }
247 + $this->_collectDependencies($package, $dep->getPackage());
266 248 }
267 249
268 250 $this->fireEndMethod($method);
349 331 ++$this->_nodeMetrics[$pkgUUID][self::M_NUMBER_OF_CONCRETE_CLASSES];
350 332 }
351 333
352 - // Traverse all dependencies
334 +
353 335 foreach ($type->getDependencies() as $dep) {
354 - // Get dependent package uuid
355 - $depPkgUUID = $dep->getPackage()->getUUID();
336 + $this->_collectDependencies($type->getPackage(), $dep->getPackage());
337 + }
356 338
357 - // Skip if context and dependency are equal
358 - if ($depPkgUUID === $pkgUUID) {
359 - continue;
360 - }
339 + foreach ($type->getMethods() as $method) {
340 + $method->accept($this);
341 + }
342 + }
361 343
362 - // Create a container for this dependency
363 - $this->initPackageMetric($dep->getPackage());
344 + /**
345 + * Collects the dependencies between the two given packages.
346 + *
347 + * @param PHP_Depend_Code_Package $packageA Context/owning package.
348 + * @param PHP_Depend_Code_Package $packageB Dependent package.
349 + *
350 + * @return void
351 + */
352 + private function _collectDependencies(
353 + PHP_Depend_Code_Package $packageA,
354 + PHP_Depend_Code_Package $packageB
355 + ) {
356 + $idA = $packageA->getUUID();
357 + $idB = $packageB->getUUID();
364 358
365 - if (!in_array($depPkgUUID, $this->_nodeMetrics[$pkgUUID][self::M_EFFERENT_COUPLING])) {
366 - $this->_nodeMetrics[$pkgUUID][self::M_EFFERENT_COUPLING][] = $depPkgUUID;
367 - $this->_nodeMetrics[$depPkgUUID][self::M_AFFERENT_COUPLING][] = $pkgUUID;
368 - }
359 + if ($idB === $idA) {
360 + return;
369 361 }
370 362
371 - foreach ($type->getMethods() as $method) {
372 - $method->accept($this);
363 + // Create a container for this dependency
364 + $this->initPackageMetric($packageB);
365 +
366 + if (!in_array($idB, $this->_nodeMetrics[$idA][self::M_EFFERENT_COUPLING])) {
367 + $this->_nodeMetrics[$idA][self::M_EFFERENT_COUPLING][] = $idB;
368 + $this->_nodeMetrics[$idB][self::M_AFFERENT_COUPLING][] = $idA;
373 369 }
374 370 }
375 371