Completed
Push — master ( 4a09ca...58b9b1 )
by Shcherbak
05:17 queued 01:09
created

RedundantNullPropertyValueFixer::getName()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 3
ccs 0
cts 0
cp 0
rs 10
cc 1
eloc 2
nc 1
nop 0
crap 2
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 RedundantNullPropertyValueFixer 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_fixer';
29
    }
30
31
32
    /**
33
     * @return string
34
     */
35
    public function getDescription() {
36
      return 'Replace null assignment from the class property';
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 10
    public function process(File $file, Report $report) {
57 10
      $collection = Collection::createFromString($file->getContent()->get());
58
59
60 10
      $invalidProperties = InvalidPropertyFinder::find($collection);
61 10
      if (count($invalidProperties) === 0) {
62 3
        return;
63
      }
64
65 7
      foreach ($invalidProperties as $property) {
66 7
        $report->addMessage($file, $this, 'Replace redundant NULL value', $property->getVariable()->getLine());
67 7
        foreach ($property->getTokensToReplace() as $token) {
68 7
          $token->remove();
69
        }
70
      }
71
72 7
      $file->getContent()->set($collection->assemble());
73 7
    }
74
75
  }