From aaa02a3dd73d15779ada3adc7178e2f32adc772d Mon Sep 17 00:00:00 2001 From: Filipe Esperandio Date: Thu, 21 Sep 2017 17:28:40 -0300 Subject: [PATCH 1/6] Allow rules string as a configuration alternative --- fixtures/config.rules.mix.json | 11 ++++++++ fixtures/config.rules.names.json | 10 ++++++++ src/Config.groovy | 43 ++++++++++++++++++++++++-------- test/ConfigTest.groovy | 12 +++++++++ 4 files changed, 66 insertions(+), 10 deletions(-) create mode 100644 fixtures/config.rules.mix.json create mode 100644 fixtures/config.rules.names.json diff --git a/fixtures/config.rules.mix.json b/fixtures/config.rules.mix.json new file mode 100644 index 0000000..8d4861a --- /dev/null +++ b/fixtures/config.rules.mix.json @@ -0,0 +1,11 @@ +{ + "enabled": true, + "channel": "beta", + "config": { + "file": "specified_rules.xml", + "rules": "java-basic,design" + }, + "include_paths": [ + "Main.java" + ] +} diff --git a/fixtures/config.rules.names.json b/fixtures/config.rules.names.json new file mode 100644 index 0000000..7a09c8e --- /dev/null +++ b/fixtures/config.rules.names.json @@ -0,0 +1,10 @@ +{ + "enabled": true, + "channel": "beta", + "config": { + "rules": "java-basic,design" + }, + "include_paths": [ + "Main.java" + ] +} diff --git a/src/Config.groovy b/src/Config.groovy index d305747..ea17179 100644 --- a/src/Config.groovy +++ b/src/Config.groovy @@ -22,16 +22,15 @@ class Config { } def ruleSet() { - if(parsedConfig.config) { - def configFile = parsedConfig.config instanceof String ? parsedConfig.config : parsedConfig.config.file - - def specifiedRules = new File(appContext.codeFolder, configFile) - if(specifiedRules.exists()) { - return specifiedRules.absolutePath - } else { - System.err.println "Config file ${configFile} not found" - System.exit(1) - } + def config = parsedConfig.config + + switch(config) { + case String: + return specifiedRules(config) + break + case Map: + return rulesOrFile(config) + break } def defaultFile = new File(appContext.codeFolder, "ruleset.xml") @@ -46,6 +45,30 @@ class Config { filesList.absolutePath } + private def rulesOrFile(config) { + validate(config) + if(config.rules) { + return config.rules + } + return specifiedRules(config.file) + } + + private def validate(config) { + if(config.file && config.rules) { + throw new IllegalArgumentException("Config should contain 'file' OR 'rules'") + } + } + + private def specifiedRules(configFile) { + def rules = new File(appContext.codeFolder, configFile) + if(rules.exists()) { + return rules.absolutePath + } else { + System.err.println "Config file ${configFile} not found" + System.exit(1) + } + } + private def filesToAnalyze() { def includePaths = parsedConfig.include_paths?.join(" ") def codeFolder = new File(appContext.codeFolder) diff --git a/test/ConfigTest.groovy b/test/ConfigTest.groovy index 1b10ae7..564db3b 100644 --- a/test/ConfigTest.groovy +++ b/test/ConfigTest.groovy @@ -19,4 +19,16 @@ class ConfigTest { def config = new Config([configFile: "/usr/src/app/fixtures/ruleset_default_file/config.json", codeFolder: "/usr/src/app/fixtures/ruleset_default_file"]) assertEquals config.ruleSet(), "/usr/src/app/fixtures/ruleset_default_file/ruleset.xml" } + + @Test(expected = IllegalArgumentException.class) + public void doesNotAllowToMixRulesAndFile() { + def config = new Config([configFile: "/usr/src/app/fixtures/config.rules.mix.json", codeFolder: "/usr/src/app/fixtures"]) + config.ruleSet() + } + + @Test + public void acceptRulesSimpleNames() { + def config = new Config([configFile: "/usr/src/app/fixtures/config.rules.names.json", codeFolder: "/usr/src/app/fixtures"]) + assertEquals config.ruleSet(), "java-basic,design" + } } From 7a2eda6a35274a2b20d80d67d79d85b2aebaa120 Mon Sep 17 00:00:00 2001 From: Filipe Esperandio Date: Mon, 25 Sep 2017 16:10:01 -0300 Subject: [PATCH 2/6] Adjust fixtures --- fixtures/{config.rules.names.json => rules/config.json} | 2 +- fixtures/{config.rules.mix.json => rules/config.mix.json} | 4 ++-- test/ConfigTest.groovy | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) rename fixtures/{config.rules.names.json => rules/config.json} (73%) rename fixtures/{config.rules.mix.json => rules/config.mix.json} (60%) diff --git a/fixtures/config.rules.names.json b/fixtures/rules/config.json similarity index 73% rename from fixtures/config.rules.names.json rename to fixtures/rules/config.json index 7a09c8e..5c01060 100644 --- a/fixtures/config.rules.names.json +++ b/fixtures/rules/config.json @@ -2,7 +2,7 @@ "enabled": true, "channel": "beta", "config": { - "rules": "java-basic,design" + "rules": "java-basic,java-design" }, "include_paths": [ "Main.java" diff --git a/fixtures/config.rules.mix.json b/fixtures/rules/config.mix.json similarity index 60% rename from fixtures/config.rules.mix.json rename to fixtures/rules/config.mix.json index 8d4861a..dd93608 100644 --- a/fixtures/config.rules.mix.json +++ b/fixtures/rules/config.mix.json @@ -2,8 +2,8 @@ "enabled": true, "channel": "beta", "config": { - "file": "specified_rules.xml", - "rules": "java-basic,design" + "file": "rules.xml", + "rules": "java-basic,java-design" }, "include_paths": [ "Main.java" diff --git a/test/ConfigTest.groovy b/test/ConfigTest.groovy index 564db3b..447a841 100644 --- a/test/ConfigTest.groovy +++ b/test/ConfigTest.groovy @@ -22,13 +22,13 @@ class ConfigTest { @Test(expected = IllegalArgumentException.class) public void doesNotAllowToMixRulesAndFile() { - def config = new Config([configFile: "/usr/src/app/fixtures/config.rules.mix.json", codeFolder: "/usr/src/app/fixtures"]) + def config = new Config([configFile: "/usr/src/app/fixtures/rules/config.mix.json", codeFolder: "/usr/src/app/fixtures/rules"]) config.ruleSet() } @Test public void acceptRulesSimpleNames() { - def config = new Config([configFile: "/usr/src/app/fixtures/config.rules.names.json", codeFolder: "/usr/src/app/fixtures"]) + def config = new Config([configFile: "/usr/src/app/fixtures/rules/config.json", codeFolder: "/usr/src/app/fixtures/rules"]) assertEquals config.ruleSet(), "java-basic,design" } } From c574a77de07ad7f39facc180162839e1843deaf0 Mon Sep 17 00:00:00 2001 From: Filipe Esperandio Date: Mon, 25 Sep 2017 16:19:34 -0300 Subject: [PATCH 3/6] Fix test --- test/ConfigTest.groovy | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ConfigTest.groovy b/test/ConfigTest.groovy index 447a841..dea7387 100644 --- a/test/ConfigTest.groovy +++ b/test/ConfigTest.groovy @@ -29,6 +29,6 @@ class ConfigTest { @Test public void acceptRulesSimpleNames() { def config = new Config([configFile: "/usr/src/app/fixtures/rules/config.json", codeFolder: "/usr/src/app/fixtures/rules"]) - assertEquals config.ruleSet(), "java-basic,design" + assertEquals config.ruleSet(), "java-basic,java-design" } } From 7c70ff62e188250fada826325ccddf4a04178b4b Mon Sep 17 00:00:00 2001 From: Filipe Esperandio Date: Mon, 25 Sep 2017 17:41:35 -0300 Subject: [PATCH 4/6] Expectations come first --- test/ConfigTest.groovy | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/ConfigTest.groovy b/test/ConfigTest.groovy index dea7387..cfe295e 100644 --- a/test/ConfigTest.groovy +++ b/test/ConfigTest.groovy @@ -5,19 +5,19 @@ class ConfigTest { @Test public void defaultRuleSet() { def config = new Config([configFile: "/usr/src/app/fixtures/default/config.json", codeFolder: "/usr/src/app/fixtures/default"]) - assertEquals config.ruleSet(), "/usr/src/app/ruleset.xml" + assertEquals "/usr/src/app/ruleset.xml", config.ruleSet() } @Test public void specifiedRuleSetFile() { def config = new Config([configFile: "/usr/src/app/fixtures/specified_file/config.new.json", codeFolder: "/usr/src/app/fixtures/specified_file"]) - assertEquals config.ruleSet(), "/usr/src/app/fixtures/specified_file/rules.xml" + assertEquals "/usr/src/app/fixtures/specified_file/rules.xml", config.ruleSet() } @Test public void honorPresentRules() { def config = new Config([configFile: "/usr/src/app/fixtures/ruleset_default_file/config.json", codeFolder: "/usr/src/app/fixtures/ruleset_default_file"]) - assertEquals config.ruleSet(), "/usr/src/app/fixtures/ruleset_default_file/ruleset.xml" + assertEquals "/usr/src/app/fixtures/ruleset_default_file/ruleset.xml", config.ruleSet() } @Test(expected = IllegalArgumentException.class) @@ -29,6 +29,6 @@ class ConfigTest { @Test public void acceptRulesSimpleNames() { def config = new Config([configFile: "/usr/src/app/fixtures/rules/config.json", codeFolder: "/usr/src/app/fixtures/rules"]) - assertEquals config.ruleSet(), "java-basic,java-design" + assertEquals "java-basic,java-design", config.ruleSet() } } From 822c28ad7ad51e4102a2af7d7c880c17fdd317f9 Mon Sep 17 00:00:00 2001 From: Filipe Esperandio Date: Mon, 25 Sep 2017 17:43:11 -0300 Subject: [PATCH 5/6] Expect rules as array --- fixtures/rules/config.json | 2 +- src/Config.groovy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fixtures/rules/config.json b/fixtures/rules/config.json index 5c01060..dae8493 100644 --- a/fixtures/rules/config.json +++ b/fixtures/rules/config.json @@ -2,7 +2,7 @@ "enabled": true, "channel": "beta", "config": { - "rules": "java-basic,java-design" + "rules": ["java-basic", "java-design"] }, "include_paths": [ "Main.java" diff --git a/src/Config.groovy b/src/Config.groovy index ea17179..9530a8e 100644 --- a/src/Config.groovy +++ b/src/Config.groovy @@ -48,7 +48,7 @@ class Config { private def rulesOrFile(config) { validate(config) if(config.rules) { - return config.rules + return config.rules.join(",") } return specifiedRules(config.file) } From 49278a9107203b8616782d6db1a6e631c3e4494d Mon Sep 17 00:00:00 2001 From: Filipe Esperandio Date: Mon, 25 Sep 2017 18:02:16 -0300 Subject: [PATCH 6/6] Adjust rules array --- fixtures/rules/config.mix.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fixtures/rules/config.mix.json b/fixtures/rules/config.mix.json index dd93608..4d5a221 100644 --- a/fixtures/rules/config.mix.json +++ b/fixtures/rules/config.mix.json @@ -3,7 +3,7 @@ "channel": "beta", "config": { "file": "rules.xml", - "rules": "java-basic,java-design" + "rules": ["java-basic", "java-design"] }, "include_paths": [ "Main.java"