/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd.lang.vm.rule.basic;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.sourceforge.pmd.lang.vm.ast.ASTText;
import net.sourceforge.pmd.lang.vm.rule.AbstractVmRule;
public class NoInlineJavaScriptRule extends AbstractVmRule {
@Override
public Object visit(final ASTText node, final Object data) {
final Pattern scriptPattern = Pattern.compile("<script\\s[^>]*>", Pattern.CASE_INSENSITIVE);
final Pattern srcPattern = Pattern.compile("\\ssrc\\s*=", Pattern.CASE_INSENSITIVE);
final Matcher matcher = scriptPattern.matcher(node.literal());
while (matcher.find()) {
final String currentMatch = matcher.group();
if (!srcPattern.matcher(currentMatch).find()) {
addViolation(data, node);
}
}
return super.visit(node, data);
}
}