Skip to content

Commit e595bb0

Browse files
author
ABaldwinHunter
committed
Engine accepts paths to custom ruleset
When PHPMD gets run, it accepts rule names, e.g. codesize,unusedcode,naming as a comma separated string. It also accepts paths to a custome rule defined by the user mixed in. For example: ``` phpmd: enabled: true config: rulesets: "unusedcode,codesize,cleancode,design,naming,phpmd.xml" ``` where `phpmd.xml` contains a custom rule set up by user. Previously, our engine failed to honor that config setup because it didn't prefix `/code/` to the path. The result was 0 issues found across board. This change fixes that behavior.
1 parent 51a0516 commit e595bb0

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

Runner.php

+17-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
class Runner
1111
{
12+
const RULESETS = 'cleancode,codesize,controversial,design,naming,unusedcode';
13+
1214
private $config;
1315
private $server;
1416

@@ -63,6 +65,19 @@ public function queuePaths($dir, $prefix = '', $exclusions = []) {
6365
}
6466
}
6567

68+
public function prefixCodeDirectory($configRulesets) {
69+
$officialPhpRulesets = explode(',', Runner::RULESETS);
70+
$configRulesets = explode(',', $configRulesets);
71+
72+
foreach ($configRulesets as &$r) {
73+
if (!in_array($r, $officialPhpRulesets)) {
74+
$r = "/code/$r";
75+
}
76+
}
77+
78+
return implode(',', $configRulesets);
79+
}
80+
6681
public function run($files)
6782
{
6883
$resultFile = tempnam(sys_get_temp_dir(), 'phpmd');
@@ -78,10 +93,11 @@ public function run($files)
7893
$phpmd->setFileExtensions(explode(',', $this->config['config']['file_extensions']));
7994
}
8095

81-
$rulesets = "cleancode,codesize,controversial,design,naming,unusedcode";
96+
$rulesets = Runner::RULESETS;
8297

8398
if (isset($this->config['config']['rulesets'])) {
8499
$rulesets = $this->config['config']['rulesets'];
100+
$rulesets = $this->prefixCodeDirectory($rulesets);
85101
}
86102

87103
$phpmd->processFiles(

0 commit comments

Comments
 (0)