Как написать собственный детектор для плагина find sec bug?
Как написать собственный детектор для плагина find sec bug? Это поможет полностью, если кто-то напишет образец детектора, чтобы обнаружить использование слова. заранее спасибо
1 ответ
Ниже приведен пример кода для обнаружения system.out.printl, но он показывает множество ложноположительных ошибок
package com.h3xstream.findsecbugs;
import org.apache.bcel.Constants;
import edu.umd.cs.findbugs.BugInstance;
import edu.umd.cs.findbugs.BugReporter;
import edu.umd.cs.findbugs.Priorities;
import edu.umd.cs.findbugs.bcel.OpcodeStackDetector;
import edu.umd.cs.findbugs.classfile.ClassDescriptor;
import edu.umd.cs.findbugs.classfile.FieldDescriptor;
public class CallToSystemOutPrintlnDetector2 extends OpcodeStackDetector {
private BugReporter bugReporter;
public CallToSystemOutPrintlnDetector2(BugReporter bugReporter) {
super();
this.bugReporter = bugReporter;
}
public void sawOpcode(int seen) {
if (seen == Constants.GETSTATIC) {
try {
FieldDescriptor operand = getFieldDescriptorOperand();
ClassDescriptor classDescriptor = operand.getClassDescriptor();
if ("java/lang/System".equals(classDescriptor.getClassName())
&& ("err".equals(operand.getName()) || "out"
.equals(operand.getName()))) {
bugReporter
.reportBug(new BugInstance(this,
"MY_CALL_TO_SYSTEM_OUT_BUG",
Priorities.NORMAL_PRIORITY)
//
.addClass(this).addMethod(this)
.addSourceLine(this));
}
} catch (Exception e) {
// ignore
}
}
}
}