用检查代码中是否存在System.out为例。
package edu.umd.cs.findbugs.detect; import org.apache.bcel.classfile.Code; import edu.umd.cs.findbugs.BugInstance; import edu.umd.cs.findbugs.BugReporter; import edu.umd.cs.findbugs.bcel.OpcodeStackDetector; /** * @author 判断System.out和System.error这种情况 */ public class ForbiddenSystemClass extends OpcodeStackDetector { BugReporter bugReporter; public ForbiddenSystemClass(BugReporter bugReporter) { this.bugReporter = bugReporter; } /** * visit方法,在每次进入字节码方法的时候调用 在每次进入新方法的时候清空标志位 */ @Override public void visit(Code obj) { super.visit(obj); } /** * 每扫描一条字节码就会进入sawOpcode方法 * * @param seen * 字节码的枚举值 */ @Override public void sawOpcode(int seen) { // getstatic #57; //Field java/lang/System.out:Ljava/io/PrintStream; if (seen == GETSTATIC) { if (getClassConstantOperand
findbugs自定义检查器
最新推荐文章于 2022-08-16 14:55:35 发布