From 3d802f69cdf946bfbf3878692990f8a365a41f27 Mon Sep 17 00:00:00 2001 From: Justin Mclean Date: Wed, 21 Oct 2015 14:56:54 +1100 Subject: [PATCH 1/4] add scope parameter (needed for cfinclude) --- src/main/java/com/cflint/plugins/core/CFXTagChecker.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cflint/plugins/core/CFXTagChecker.java b/src/main/java/com/cflint/plugins/core/CFXTagChecker.java index bbeb8a703..8a77e87ac 100644 --- a/src/main/java/com/cflint/plugins/core/CFXTagChecker.java +++ b/src/main/java/com/cflint/plugins/core/CFXTagChecker.java @@ -12,8 +12,12 @@ public class CFXTagChecker extends CFLintScannerAdapter { public void element(final Element element, final Context context, final BugList bugs) { final String tagName = element.getName(); final String cfmlTagCheck = getParameter("tagName"); + final String scope = getParameter("scope"); + if (tagName.matches(cfmlTagCheck)) { - context.addMessage("AVOID_USING_" + tagName.toUpperCase() + "_TAG", tagName); + if (scope == null || scope.equals("component") && context.isInComponent()) { + context.addMessage("AVOID_USING_" + tagName.toUpperCase() + "_TAG", tagName); + } } } } From fef9f94623031c6a3747d4286b962af2177e2ef4 Mon Sep 17 00:00:00 2001 From: Justin Mclean Date: Wed, 21 Oct 2015 14:57:17 +1100 Subject: [PATCH 2/4] update config files --- src/main/resources/cflint.definition.json | 21 +++++++++++++++++++++ src/main/resources/cflint.definition.xml | 8 ++++++++ 2 files changed, 29 insertions(+) diff --git a/src/main/resources/cflint.definition.json b/src/main/resources/cflint.definition.json index eb44e8d5d..0449d35a2 100644 --- a/src/main/resources/cflint.definition.json +++ b/src/main/resources/cflint.definition.json @@ -242,6 +242,27 @@ } ] }, + { + "name": "CFIncludeChecker", + "className": "CFXTagChecker", + "message": [ + { + "code": "AVOID_USING_CFINCUDE_TAG", + "messageText": "Avoid using <${tagName}> tags. Use components instead.", + "severity": "WARNING" + } + ], + "parameter": [ + { + "name": "tagName", + "value": "cfinclude" + }, + { + "name": "scope", + "value": "component" + } + ] + }, { "name": "ComponentHintChecker", "className": "ComponentHintChecker", diff --git a/src/main/resources/cflint.definition.xml b/src/main/resources/cflint.definition.xml index 2620ca36c..29a800518 100644 --- a/src/main/resources/cflint.definition.xml +++ b/src/main/resources/cflint.definition.xml @@ -113,6 +113,14 @@ + + + Avoid using <${tagName}> tags. Use components instead. + WARNING + + + + WARNING From f67f181ef89f0748f25a803c210dbb9156489708 Mon Sep 17 00:00:00 2001 From: Justin Mclean Date: Wed, 21 Oct 2015 14:57:46 +1100 Subject: [PATCH 3/4] tests for cfinclude --- .../java/com/cflint/TestCFIncludeChecker.java | 67 +++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 src/test/java/com/cflint/TestCFIncludeChecker.java diff --git a/src/test/java/com/cflint/TestCFIncludeChecker.java b/src/test/java/com/cflint/TestCFIncludeChecker.java new file mode 100644 index 000000000..4d7617af1 --- /dev/null +++ b/src/test/java/com/cflint/TestCFIncludeChecker.java @@ -0,0 +1,67 @@ +package com.cflint; + +import static org.junit.Assert.assertEquals; + +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import org.junit.Before; +import org.junit.Test; + +import cfml.parsing.reporting.ParseException; + +import com.cflint.config.CFLintPluginInfo.PluginInfoRule; +import com.cflint.config.CFLintPluginInfo.PluginInfoRule.PluginMessage; +import com.cflint.config.ConfigRuntime; +import com.cflint.plugins.core.CFXTagChecker; + +public class TestCFIncludeChecker { + + private CFLint cfBugs; + + @Before + public void setUp() { + final ConfigRuntime conf = new ConfigRuntime(); + final PluginInfoRule pluginRule = new PluginInfoRule(); + pluginRule.setName("CFXTagChecker"); + pluginRule.addParameter("tagName", "cfinclude"); + pluginRule.addParameter("scope", "component"); + conf.getRules().add(pluginRule); + final PluginMessage pluginMessage = new PluginMessage("AVOID_USING_CFINCLUDE_TAG"); + pluginMessage.setSeverity("WARNING"); + pluginRule.getMessages().add(pluginMessage); + final CFXTagChecker checker = new CFXTagChecker(); + checker.setParameter("tagName", "cfinclude"); + checker.setParameter("scope", "component"); + cfBugs = new CFLint(conf, checker); + } + + @Test + public void testCfIncludeIncomponent() throws ParseException, IOException { + + final String scriptSrc = "\r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "\r\n"; + + cfBugs.process(scriptSrc, "test"); + final List result = cfBugs.getBugs().getBugList().values().iterator().next(); + assertEquals(1, result.size()); + assertEquals("AVOID_USING_CFINCLUDE_TAG", result.get(0).getMessageCode()); + } + + @Test + public void testLonelyCfInclude() throws ParseException, IOException { + + final String scriptSrc = "\r\n" + + "\r\n" + + "\r\n"; + + cfBugs.process(scriptSrc, "test"); + final Map> result = cfBugs.getBugs().getBugList(); + assertEquals(0, result.size()); + } + +} From bded297c3b53c0d12b8e4e6d7143de11ad283b5a Mon Sep 17 00:00:00 2001 From: Justin Mclean Date: Thu, 22 Oct 2015 12:56:29 +1100 Subject: [PATCH 4/4] Fix encoding issue in XML file --- src/main/resources/cflint.definition.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/cflint.definition.xml b/src/main/resources/cflint.definition.xml index 29a800518..a57d07051 100644 --- a/src/main/resources/cflint.definition.xml +++ b/src/main/resources/cflint.definition.xml @@ -115,7 +115,7 @@ - Avoid using <${tagName}> tags. Use components instead. + Avoid using <${tagName}> tags. Use components instead. WARNING