RedundantNullPropertyValueReview::process()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 9
CRAP Score 3

Importance

Changes 0
Metric Value
dl 0
loc 16
ccs 9
cts 9
cp 1
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 8
nc 3
nop 2
crap 3
1
<?php
2
3
  namespace Funivan\Cs\Tools\Php\RedundantNullPropertyValue;
4
5
  use Funivan\Cs\FileTool\FileTool;
6
  use Funivan\Cs\Fs\File;
7
  use Funivan\Cs\Fs\FileFilter;
8
  use Funivan\Cs\Report\Report;
9
  use Funivan\PhpTokenizer\Collection;
10
11
  /**
12
   *
13
   */
14
  class RedundantNullPropertyValueReview implements FileTool {
15
16
17
    /**
18
     * Return unique string of the tool
19
     * You can set any name but we suggest to use following rules:
20
     *  - Allowed chars [a-z0-9_]+
21
     *  - Review tools should have ending `_review`
22
     *  - Fixer tools should have ending `_fixer`
23
     *
24
     * @codeCoverageIgnore
25
     * @return string
26
     */
27
    public function getName() {
28
      return 'redundant_null_property_value_review';
29
    }
30
31
32
    /**
33
     * @return string
34
     */
35
    public function getDescription() {
36
      return 'Detect properties defined with null values';
37
    }
38
39
40
    /**
41
     * Check if we can process file by this tool
42
     * Called before file process
43
     *
44
     * @param File $file
45
     * @return boolean
46
     */
47
    public function canProcess(File $file) {
48
      return (new FileFilter())->notDeleted()->extension(['php'])->isValid($file);
49
    }
50
51
52
    /**
53
     * @param File $file
54
     * @param Report $report
55
     */
56 5
    public function process(File $file, Report $report) {
57 5
      $collection = Collection::createFromString($file->getContent()->get());
58
59
60 5
      $invalidProperties = InvalidPropertyFinder::find($collection);
61 5
      if (count($invalidProperties) === 0) {
62 2
        return;
63
      }
64
65
66 3
      foreach ($invalidProperties as $property) {
67 3
        $variable = $property->getVariable();
68 3
        $report->addMessage($file, $this, 'Invalid property. Redundant NULL value for the property: '.$variable->getValue(), $variable->getLine());
69
      }
70
71 3
    }
72
73
  }