Skip to content

Commit

Permalink
#103 cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
ryaneberly committed Jan 7, 2017
1 parent d3094dc commit 646a4bb
Show file tree
Hide file tree
Showing 2 changed files with 107 additions and 120 deletions.
226 changes: 107 additions & 119 deletions src/main/java/com/cflint/config/ConfigRuntime.java
Original file line number Diff line number Diff line change
@@ -1,119 +1,107 @@
package com.cflint.config;

import java.util.ArrayList;
import java.util.List;

import com.cflint.config.CFLintPluginInfo.PluginInfoRule;
import com.cflint.config.CFLintPluginInfo.PluginInfoRule.PluginMessage;
import com.cflint.plugins.CFLintScanner;

/**
* Combines information from the config.xml and the core CFLint information and
* provides utility functions
*
* It only includes the Rules that are matched by the include/exclude section if
* one of them is present.
*/
public class ConfigRuntime extends CFLintConfig {

public ConfigRuntime() {

}

public ConfigRuntime(final CFLintConfig config, final CFLintPluginInfo pluginInfo) {
final List<PluginInfoRule> rules = new ArrayList<PluginInfoRule>();

if (config != null) {
includes.addAll(config.getIncludes());
excludes.addAll(config.getExcludes());
rules.addAll(config.getRules());
}
for (final PluginInfoRule rule : pluginInfo.getRules()) {
if (!rules.contains(rule)) {
rules.add(rule);
}
}

if (config != null) {
// If includes is specified, load *only* those messages
if (!config.getIncludes().isEmpty()) {
for (final PluginInfoRule rule : rules) {
// Include the rule if at least one of the messages is
// included.
for (final PluginMessage msg : rule.getMessages()) {
if (config.getIncludes().contains(msg)) {
for (final PluginMessage cfgMsg : config.getIncludes()) {
if (cfgMsg.equals(msg)) {
merge(cfgMsg, msg);
}
}

getRules().add(rule);
break;
}
}
}
} else {// Otherwise load all considering the excludes.
for (final PluginInfoRule rule : rules) {
// Exclude the rule if ALL of the messages are excluded.
boolean excluded = true;
for (final PluginMessage msg : rule.getMessages()) {
excluded = excluded && config.getExcludes().contains(msg);
}
if (!excluded) {
getRules().add(rule);
}
}
}
} else {
getRules().addAll(rules);
}
}

/*
* Apply the configuration to the existing rule. Overlay it.
*/
private void merge(final PluginMessage cfgMsg, final PluginMessage msg) {
if (!isEmpty(cfgMsg.getMessageText())) {
msg.setMessageText(cfgMsg.getMessageText());
}
if (!isEmpty(cfgMsg.getSeverity())) {
msg.setSeverity(cfgMsg.getSeverity());
}
}

private boolean isEmpty(final String messageText) {
return messageText == null || messageText.trim().length() == 0;
}

public boolean isIncludeMessage(final String messageCode) {
return isIncludeMessage(new PluginMessage(messageCode));
}

public boolean isIncludeMessage(final PluginMessage message) {
if (!includes.isEmpty()) {
return includes.contains(message);
} else {
return !excludes.contains(message);
}
}

public PluginInfoRule getRuleByClass(final Class<?> clazz) {
final String className = clazz.getSimpleName();
for (final PluginInfoRule rule : getRules()) {
if (rule.getName().equals(className) || className.equals(rule.getClassName())) {
return rule;
}
}
return null;
}

public PluginInfoRule getRuleForPlugin(final CFLintScanner plugin) {
for (final PluginInfoRule rule : getRules()) {
if (rule.getPluginInstance() == plugin) {
return rule;
}
}
return getRuleByClass(plugin.getClass());
}
}
package com.cflint.config;

import java.util.ArrayList;
import java.util.List;

import com.cflint.config.CFLintPluginInfo.PluginInfoRule;
import com.cflint.config.CFLintPluginInfo.PluginInfoRule.PluginMessage;
import com.cflint.plugins.CFLintScanner;

/**
* Combines information from the config.xml and the core CFLint information and
* provides utility functions
*
* It only includes the Rules that are matched by the include/exclude section if
* one of them is present.
*/
public class ConfigRuntime extends CFLintConfig {

public ConfigRuntime() {

}

public ConfigRuntime(final CFLintConfig config, final CFLintPluginInfo pluginInfo) {
final List<PluginInfoRule> rules = new ArrayList<PluginInfoRule>();

if (config != null) {
includes.addAll(config.getIncludes());
excludes.addAll(config.getExcludes());
rules.addAll(config.getRules());
}
for (final PluginInfoRule rule : pluginInfo.getRules()) {
if (!rules.contains(rule)) {
rules.add(rule);
}
}

if (config != null) {
// If includes is specified, load *only* those messages
if (!config.getIncludes().isEmpty()) {
for (final PluginInfoRule rule : rules) {
// Include the rule if at least one of the messages is
// included.
for (final PluginMessage msg : rule.getMessages()) {
if (config.getIncludes().contains(msg)) {
for (final PluginMessage cfgMsg : config.getIncludes()) {
if (cfgMsg.equals(msg)) {
merge(cfgMsg, msg);
}
}

getRules().add(rule);
break;
}
}
}
} else {// Otherwise load all considering the excludes.
for (final PluginInfoRule rule : rules) {
// Exclude the rule if ALL of the messages are excluded.
boolean excluded = true;
for (final PluginMessage msg : rule.getMessages()) {
excluded = excluded && config.getExcludes().contains(msg);
}
if (!excluded) {
getRules().add(rule);
}
}
}
} else {
getRules().addAll(rules);
}
}

/*
* Apply the configuration to the existing rule. Overlay it.
*/
private void merge(final PluginMessage cfgMsg, final PluginMessage msg) {
if (!isEmpty(cfgMsg.getMessageText())) {
msg.setMessageText(cfgMsg.getMessageText());
}
if (!isEmpty(cfgMsg.getSeverity())) {
msg.setSeverity(cfgMsg.getSeverity());
}
}

private boolean isEmpty(final String messageText) {
return messageText == null || messageText.trim().length() == 0;
}

public PluginInfoRule getRuleByClass(final Class<?> clazz) {
final String className = clazz.getSimpleName();
for (final PluginInfoRule rule : getRules()) {
if (rule.getName().equals(className) || className.equals(rule.getClassName())) {
return rule;
}
}
return null;
}

public PluginInfoRule getRuleForPlugin(final CFLintScanner plugin) {
for (final PluginInfoRule rule : getRules()) {
if (rule.getPluginInstance() == plugin) {
return rule;
}
}
return getRuleByClass(plugin.getClass());
}
}
1 change: 0 additions & 1 deletion src/main/java/com/cflint/plugins/Context.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ public static enum ContextType{
CFFuncDeclStatement functionInfo;
ContextType contextType;


String functionName;
boolean inAssignmentExpression;
public void setInAssignmentExpression(boolean inAssignmentExpression) {
Expand Down

0 comments on commit 646a4bb

Please sign in to comment.