| 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 |
|