Skip to content

Commit d62d785

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 d62d785

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

Runner.php

+19-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,20 @@ 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+
continue;
76+
}
77+
}
78+
79+
return implode(',', $configRulesets);
80+
}
81+
6682
public function run($files)
6783
{
6884
$resultFile = tempnam(sys_get_temp_dir(), 'phpmd');
@@ -78,12 +94,14 @@ public function run($files)
7894
$phpmd->setFileExtensions(explode(',', $this->config['config']['file_extensions']));
7995
}
8096

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

8399
if (isset($this->config['config']['rulesets'])) {
84100
$rulesets = $this->config['config']['rulesets'];
101+
$rulesets = $this->prefixCodeDirectory($rulesets);
85102
}
86103

104+
87105
$phpmd->processFiles(
88106
implode(",", $files),
89107
$rulesets,

0 commit comments

Comments
 (0)