2016-06-23 1 views
0

find sec bugプラグインのカスタム検出器の書き方は?誰かが単語の使用を検出するためのサンプル検出器を書くなら、それは完全に助けになるでしょう。事前に おかげ以下find sec bugプラグインのカスタム検出器の書き方は?

+0

偽陽性の多くのバグを示しているがSOへようこそ!あなたも試したことを共有してください。 http://stackoverflow.com/help/how-to-ask – selva

+0

私はsystem.out.printlnの使用を見つけるカスタム検出器を書いています。しかし、それは多くの偽陽性を与えている。 (UploadFormオブジェクト:uploadFormObj.getAllObjInExcel())の以下のステートメントでバグを示しています。 – niraj

答えて

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 
      } 
     } 
    } 

} 
関連する問題