class JschPasswordDetector extends BasicInjectionDetector {

    private static final String HARD_CODE_PASSWORD_TYPE = "HARD_CODE_PASSWORD";

    public JschPasswordDetector(BugReporter bugReporter) {
        super(bugReporter);
    }

    @Override
    protected int getPriorityFromTaintFrame(TaintFrame fact, int offset)
            throws DataflowAnalysisException {<FILL_FUNCTION_BODY>}

    @Override
    protected InjectionPoint getInjectionPoint(InvokeInstruction invoke, ConstantPoolGen cpg,
                                               InstructionHandle handle) {
        assert invoke != null && cpg != null;

        String className = invoke.getClassName(cpg);
        String method = invoke.getMethodName(cpg);
        String sig    = invoke.getSignature(cpg);
        if(className.equals("com.jcraft.jsch.JSch") &&
            method.equals("addIdentity")) {

            if(sig.equals("(Ljava/lang/String;Ljava/lang/String;)V") ||
                    sig.equals("(Ljava/lang/String;[B)V") ||
                    sig.equals("(Ljava/lang/String;Ljava/lang/String;[B)V") ||
                    sig.equals("(Ljava/lang/String;[B[B[B)V")){
                return new InjectionPoint(new int[]{0}, HARD_CODE_PASSWORD_TYPE);
            }

        }
        return InjectionPoint.NONE;
    }
}

        Taint stringValue = fact.getStackValue(offset);

        if (TaintUtil.isConstantValue(stringValue)) { //Is a constant value
            return Priorities.NORMAL_PRIORITY;
        } else {
            return Priorities.IGNORE_PRIORITY;
        }
    
<methods>public void registerVisitor(com.h3xstream.findsecbugs.taintanalysis.TaintFrameAdditionalVisitor) <variables>static com.h3xstream.findsecbugs.injection.ClassMethodSignature OBJECT,private static final com.h3xstream.findsecbugs.injection.SinksLoader SINKS_LOADER,private final Map<com.h3xstream.findsecbugs.injection.ClassMethodSignature,com.h3xstream.findsecbugs.injection.InjectionPoint> injectionMap