| @@ 14-54 (lines=41) @@ | ||
| 11 | * @group kan |
|
| 12 | * @group defect |
|
| 13 | */ |
|
| 14 | class KanDefectVisitorTest extends \PHPUnit\Framework\TestCase |
|
| 15 | { |
|
| 16 | /** |
|
| 17 | * @dataProvider provideExamples |
|
| 18 | * |
|
| 19 | * @param string $example |
|
| 20 | * @param string $classname |
|
| 21 | * @param float $expected |
|
| 22 | */ |
|
| 23 | public function testLackOfCohesionOfMethodsIsWellCalculated($example, $classname, $expected) |
|
| 24 | { |
|
| 25 | $metrics = new Metrics(); |
|
| 26 | ||
| 27 | $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7); |
|
| 28 | $traverser = new \PhpParser\NodeTraverser(); |
|
| 29 | $traverser->addVisitor(new \PhpParser\NodeVisitor\NameResolver()); |
|
| 30 | $traverser->addVisitor(new ClassEnumVisitor($metrics)); |
|
| 31 | $traverser->addVisitor(new KanDefectVisitor($metrics)); |
|
| 32 | ||
| 33 | $code = file_get_contents($example); |
|
| 34 | $this->assertNotFalse($code); |
|
| 35 | ||
| 36 | $stmts = $parser->parse($code); |
|
| 37 | $this->assertNotNull($stmts); |
|
| 38 | ||
| 39 | $traverser->traverse($stmts); |
|
| 40 | ||
| 41 | $metric = $metrics->get($classname); |
|
| 42 | $this->assertNotNull($metric); |
|
| 43 | ||
| 44 | $this->assertSame($expected, $metric->get('kanDefect')); |
|
| 45 | } |
|
| 46 | ||
| 47 | /** @return mixed[]*/ |
|
| 48 | public function provideExamples() |
|
| 49 | { |
|
| 50 | return [ |
|
| 51 | [ __DIR__ . '/../../examples/kan1.php', 'A', .89], |
|
| 52 | ]; |
|
| 53 | } |
|
| 54 | } |
|
| 55 | ||
| @@ 9-49 (lines=41) @@ | ||
| 6 | use Hal\Metric\Metrics; |
|
| 7 | use PhpParser\ParserFactory; |
|
| 8 | ||
| 9 | class LcomVisitorTest extends \PHPUnit\Framework\TestCase |
|
| 10 | { |
|
| 11 | /** |
|
| 12 | * @dataProvider provideExamples |
|
| 13 | * |
|
| 14 | * @param string $example |
|
| 15 | * @param string $classname |
|
| 16 | * @param int $expected |
|
| 17 | */ |
|
| 18 | public function testLackOfCohesionOfMethodsIsWellCalculated($example, $classname, $expected) |
|
| 19 | { |
|
| 20 | $metrics = new Metrics(); |
|
| 21 | ||
| 22 | $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7); |
|
| 23 | $traverser = new \PhpParser\NodeTraverser(); |
|
| 24 | $traverser->addVisitor(new \PhpParser\NodeVisitor\NameResolver()); |
|
| 25 | $traverser->addVisitor(new ClassEnumVisitor($metrics)); |
|
| 26 | $traverser->addVisitor(new LcomVisitor($metrics)); |
|
| 27 | ||
| 28 | $code = file_get_contents($example); |
|
| 29 | $this->assertNotFalse($code); |
|
| 30 | ||
| 31 | $stmts = $parser->parse($code); |
|
| 32 | $this->assertNotNull($stmts); |
|
| 33 | ||
| 34 | $traverser->traverse($stmts); |
|
| 35 | ||
| 36 | $metric = $metrics->get($classname); |
|
| 37 | $this->assertNotNull($metric); |
|
| 38 | ||
| 39 | $this->assertEquals($expected, $metric->get('lcom')); |
|
| 40 | } |
|
| 41 | ||
| 42 | /** @return mixed[] */ |
|
| 43 | public function provideExamples() |
|
| 44 | { |
|
| 45 | return [ |
|
| 46 | [ __DIR__ . '/../../examples/lcom1.php', 'MyClassA', 2] |
|
| 47 | ]; |
|
| 48 | } |
|
| 49 | } |
|
| 50 | ||