diff --git a/data/closure/misuses/findbugs-0/misuse.yml b/data/closure/misuses/findbugs-0/misuse.yml new file mode 100644 index 000000000..979694723 --- /dev/null +++ b/data/closure/misuses/findbugs-0/misuse.yml @@ -0,0 +1,14 @@ +api: +- com.google.javascript.rhino.Node +characteristics: +- missing/condition/null_check +crash: true +description: > + Possible null pointer dereference of firstArgument variable. +location: + file: com/google/javascript/jscomp/TightenTypes.java + method: "getAssignments(ConcreteScope)" +internal: true +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-10/misuse.yml b/data/closure/misuses/findbugs-10/misuse.yml new file mode 100644 index 000000000..0e4d1529e --- /dev/null +++ b/data/closure/misuses/findbugs-10/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.String +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Comparison of String objects using == or != and not using equals(). +location: + file: com/google/javascript/jscomp/VariableReferenceCheck.java + method: "checkVar(NodeTraversal, Var, List)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-13/misuse.yml b/data/closure/misuses/findbugs-13/misuse.yml new file mode 100644 index 000000000..80bbc82d4 --- /dev/null +++ b/data/closure/misuses/findbugs-13/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.File +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Exceptional return value of java.io.File.mkdirs() ignored. +location: + file: com/google/javascript/jscomp/AbstractCommandLineRunner.java + method: "maybeCreateDirsForPath(String)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-16/misuse.yml b/data/closure/misuses/findbugs-16/misuse.yml new file mode 100644 index 000000000..4da06b697 --- /dev/null +++ b/data/closure/misuses/findbugs-16/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.IllegalArgumentException +- java.lang.String +characteristics: +- superfluous/value_or_state +crash: true +description: > + Load of known null value as argument. +location: + file: com/google/javascript/jscomp/graph/LinkedDirectedGraph.java + method: "getDirectedPredNodes(DiGraphNode)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-17/misuse.yml b/data/closure/misuses/findbugs-17/misuse.yml new file mode 100644 index 000000000..b01737928 --- /dev/null +++ b/data/closure/misuses/findbugs-17/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.IllegalArgumentException +- java.lang.String +characteristics: +- superfluous/value_or_state +crash: true +description: > + Load of known null value as argument. +location: + file: com/google/javascript/jscomp/graph/LinkedDirectedGraph.java + method: "getDirectedSuccNodes(DiGraphNode)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-18/misuse.yml b/data/closure/misuses/findbugs-18/misuse.yml new file mode 100644 index 000000000..777b1fb23 --- /dev/null +++ b/data/closure/misuses/findbugs-18/misuse.yml @@ -0,0 +1,14 @@ +api: +- com.google.javascript.jscomp.ConcreteType +characteristics: +- superfluous/call +crash: false +description: > + Load of known null value as argument. +location: + file: com/google/javascript/jscomp/ConcreteType.java + method: "toString()" +internal: true +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-19/misuse.yml b/data/closure/misuses/findbugs-19/misuse.yml new file mode 100644 index 000000000..3ba84944e --- /dev/null +++ b/data/closure/misuses/findbugs-19/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.String +- java.lang.StringBuffer +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method concatenates strings using + in a loop +location: + file: com/google/javascript/jscomp/CoalesceVariableNames.java + method: " visit(NodeTraversal, Node, Node)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-3/misuse.yml b/data/closure/misuses/findbugs-3/misuse.yml new file mode 100644 index 000000000..a5adab962 --- /dev/null +++ b/data/closure/misuses/findbugs-3/misuse.yml @@ -0,0 +1,14 @@ +api: +- com.google.javascript.rhino.Node +characteristics: +- missing/condition/null_check +crash: true +description: > + Possible null pointer dereference of addingRoot variable. +location: + file: com/google/javascript/jscomp/InstrumentFunctions.java + method: "visit(NodeTraversal, Node, Node)" +internal: true +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-4/misuse.yml b/data/closure/misuses/findbugs-4/misuse.yml new file mode 100644 index 000000000..c351d396a --- /dev/null +++ b/data/closure/misuses/findbugs-4/misuse.yml @@ -0,0 +1,14 @@ +api: +- com.google.javascript.rhino.Node +characteristics: +- missing/condition/null_check +crash: true +description: > + Possible null pointer dereference of addingRoot variable which is obtained from Node.getParent(). +location: + file: com/google/javascript/jscomp/NodeUtil.java + method: "getAddingRoot(Node)" +internal: true +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-5/misuse.yml b/data/closure/misuses/findbugs-5/misuse.yml new file mode 100644 index 000000000..b74a27d46 --- /dev/null +++ b/data/closure/misuses/findbugs-5/misuse.yml @@ -0,0 +1,14 @@ +api: +- com.google.javascript.rhino.jstype.JSType +characteristics: +- missing/condition/null_check +crash: true +description: > + Formal parameter that may have a null value. +location: + file: com/google/javascript/rhino/jstype/PrototypeObjectType.java + method: "isSubtype(JSType)" +internal: true +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-6/misuse.yml b/data/closure/misuses/findbugs-6/misuse.yml new file mode 100644 index 000000000..5993ff842 --- /dev/null +++ b/data/closure/misuses/findbugs-6/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.String +- com.google.javascript.rhino.Node +characteristics: +- missing/condition/null_check +crash: true +description: > + Node.getQualifiedName() may return null as mentioned in its contract. +location: + file: com/google/javascript/jscomp/ProcessClosurePrimitives.java + method: "processBaseClassCall(NodeTraversal, Node)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-7/misuse.yml b/data/closure/misuses/findbugs-7/misuse.yml new file mode 100644 index 000000000..98dc8c542 --- /dev/null +++ b/data/closure/misuses/findbugs-7/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.String +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Comparison of String objects using == or != and not using equals(). +location: + file: com/google/javascript/jscomp/SourceMap2.java + method: "addMapping(Node, Position, Position)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/misuses/findbugs-9/misuse.yml b/data/closure/misuses/findbugs-9/misuse.yml new file mode 100644 index 000000000..ff238edd9 --- /dev/null +++ b/data/closure/misuses/findbugs-9/misuse.yml @@ -0,0 +1,14 @@ +api: +- com.google.javascript.rhino.Node +characteristics: +- missing/condition/null_check +crash: true +description: > + Formal parameter fnNode may have a null value. +location: + file: com/google/javascript/jscomp/TypedCodeGenerator.java + method: "getFunctionAnnotation(Node)" +internal: true +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/closure/versions/319/version.yml b/data/closure/versions/319/version.yml index e4617d6af..7e06713c3 100644 --- a/data/closure/versions/319/version.yml +++ b/data/closure/versions/319/version.yml @@ -8,6 +8,19 @@ misuses: - '2' - 'dmmc-13' - 'dmmc-1023' +- 'findbugs-0' +- 'findbugs-3' +- 'findbugs-4' +- 'findbugs-5' +- 'findbugs-6' +- 'findbugs-7' +- 'findbugs-9' +- 'findbugs-10' +- 'findbugs-13' +- 'findbugs-16' +- 'findbugs-17' +- 'findbugs-18' +- 'findbugs-19' - 'mudetect-12' - 'mudetect-13' - 'mudetect-17' diff --git a/data/itext/misuses/findbugs-4/misuse.yml b/data/itext/misuses/findbugs-4/misuse.yml new file mode 100644 index 000000000..393140b01 --- /dev/null +++ b/data/itext/misuses/findbugs-4/misuse.yml @@ -0,0 +1,14 @@ +api: +- byte array +characteristics: +- missing/condition/null_check +crash: true +description: > + Possible null pointer dereference of variable bars. +location: + file: com/itextpdf/text/pdf/BarcodeEAN.java + method: "placeBarcode(PdfContentByte, BaseColor, BaseColor)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/itext/misuses/findbugs-5/misuse.yml b/data/itext/misuses/findbugs-5/misuse.yml new file mode 100644 index 000000000..e8550b700 --- /dev/null +++ b/data/itext/misuses/findbugs-5/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.FileInputStream +characteristics: +- missing/condition/null_check +crash: true +description: > + Possible null pointer dereference of variable fs. +location: + file: com/itextpdf/text/pdf/ICC_Profile.java + method: "GetInstance(String)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/itext/misuses/findbugs-6/misuse.yml b/data/itext/misuses/findbugs-6/misuse.yml new file mode 100644 index 000000000..7e0e67915 --- /dev/null +++ b/data/itext/misuses/findbugs-6/misuse.yml @@ -0,0 +1,14 @@ +api: +- org.w3c.dom.Node +characteristics: +- missing/condition/null_check +crash: true +description: > + Node.getNextSibling() may return a null value. +location: + file: com/itextpdf/text/pdf/XfaForm.java + method: "createDatasetsNode(Node)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/itext/misuses/findbugs-7/misuse.yml b/data/itext/misuses/findbugs-7/misuse.yml new file mode 100644 index 000000000..6ddc622f8 --- /dev/null +++ b/data/itext/misuses/findbugs-7/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.lang.Exception +characteristics: +- missing/call +crash: false +description: > + Method might ignore java.lang.Exception. +location: + file: com/itextpdf/text/Jpeg2000.java + method: "processParameters()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/itext/versions/5091/version.yml b/data/itext/versions/5091/version.yml index 6b836aaa3..061f0d1ad 100644 --- a/data/itext/versions/5091/version.yml +++ b/data/itext/versions/5091/version.yml @@ -11,6 +11,10 @@ misuses: - 'dmmc-61' - 'dmmc-357' - 'dmmc-937' +- 'findbugs-4' +- 'findbugs-5' +- 'findbugs-6' +- 'findbugs-7' - 'jadet-5' - 'jadet-9' - 'mudetect-15' diff --git a/data/jmrtd/misuses/findbugs-0/misuse.yml b/data/jmrtd/misuses/findbugs-0/misuse.yml new file mode 100644 index 000000000..d26626b63 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-0/misuse.yml @@ -0,0 +1,14 @@ +api: +- byte array +characteristics: +- missing/condition/null_check +crash: true +description: > + Possible null pointer dereference of variable data. +location: + file: sos/gui/HexArrayField.java + method: "setValue(byte[])" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-1/misuse.yml b/data/jmrtd/misuses/findbugs-1/misuse.yml new file mode 100644 index 000000000..4f8f2585c --- /dev/null +++ b/data/jmrtd/misuses/findbugs-1/misuse.yml @@ -0,0 +1,15 @@ +api: +- byte array +- java.io.DataInputStream +characteristics: +- missing/condition/null_check +crash: false +description: > + Possible null passed for non-null parameter of new java.io.ByteArrayInputStream(byte[]) +location: + file: sos/mrtd/PassportService.java + method: "readFace()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-10/misuse.yml b/data/jmrtd/misuses/findbugs-10/misuse.yml new file mode 100644 index 000000000..a1282f2d5 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-10/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.lang.System +characteristics: +- superfluous/call +crash: true +description: > + Method invokes System.exit(...), which shuts down the entire virtual machine. +location: + file: sos/mrtd/sample/PassportGUI.java + method: "(String[])" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-11/misuse.yml b/data/jmrtd/misuses/findbugs-11/misuse.yml new file mode 100644 index 000000000..140f11c3a --- /dev/null +++ b/data/jmrtd/misuses/findbugs-11/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.Exception +characteristics: +- superfluous/exception handling +- missing/exception handling +crash: false +description: > + Exception is caught when Exception is not thrown. +location: + file: sos/mrtd/sample/BACPanel.java + method: "actionPerformed(ActionEvent)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-12/misuse.yml b/data/jmrtd/misuses/findbugs-12/misuse.yml new file mode 100644 index 000000000..99c7b52e1 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-12/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.Exception +characteristics: +- superfluous/exception handling +- missing/exception handling +crash: false +description: > + Exception is caught when Exception is not thrown. +location: + file: sos/mrtd/sample/PassportGUI.java + method: "(String[])" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-13/misuse.yml b/data/jmrtd/misuses/findbugs-13/misuse.yml new file mode 100644 index 000000000..48244b367 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-13/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.String +- java.lang.StringBuffer +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method concatenates strings using + in a loop +location: + file: sos/gui/HexField.java + method: "setValue(byte[])" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-14/misuse.yml b/data/jmrtd/misuses/findbugs-14/misuse.yml new file mode 100644 index 000000000..68a6070c9 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-14/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.Short +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method invokes inefficient new Short(short) constructor, better to use Short.valueOf(short) instead. +location: + file: sos/mrtd/PassportFileService.java + method: "readFile(short)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-15/misuse.yml b/data/jmrtd/misuses/findbugs-15/misuse.yml new file mode 100644 index 000000000..dd2b93a09 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-15/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.Integer +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method invokes inefficient new Integer(int) constructor, better to use Integer.valueOf(int) instead. +location: + file: sos/smartcards/BERTLVObject.java + method: "readTag(DataInputStream)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-16/misuse.yml b/data/jmrtd/misuses/findbugs-16/misuse.yml new file mode 100644 index 000000000..1eee9b858 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-16/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.String +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method invokes inefficient new String(String) constructor. +location: + file: sos/util/Hex.java + method: "pad(String, int, char, boolean)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-17/misuse.yml b/data/jmrtd/misuses/findbugs-17/misuse.yml new file mode 100644 index 000000000..ba198c386 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-17/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.String +- java.lang.StringBuffer +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method concatenates strings using + in a loop +location: + file: sos/util/Hex.java + method: "bytesToASCIIString(byte[])" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-18/misuse.yml b/data/jmrtd/misuses/findbugs-18/misuse.yml new file mode 100644 index 000000000..384a5ce5a --- /dev/null +++ b/data/jmrtd/misuses/findbugs-18/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.String +- java.lang.StringBuffer +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method concatenates strings using + in a loop +location: + file: sos/util/Hex.java + method: "bytesToHexString(byte[], int, int)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-19/misuse.yml b/data/jmrtd/misuses/findbugs-19/misuse.yml new file mode 100644 index 000000000..09a72598e --- /dev/null +++ b/data/jmrtd/misuses/findbugs-19/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.String +- java.lang.StringBuffer +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Method concatenates strings using + in a loop +location: + file: sos/util/Hex.java + method: "bytesToPrettyString(byte[], int, boolean, int, String, boolean)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-2/misuse.yml b/data/jmrtd/misuses/findbugs-2/misuse.yml new file mode 100644 index 000000000..c35908f7a --- /dev/null +++ b/data/jmrtd/misuses/findbugs-2/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.skip(long) +location: + file: sos/mrtd/PassportService.java + method: "readDateOfBirth()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-3/misuse.yml b/data/jmrtd/misuses/findbugs-3/misuse.yml new file mode 100644 index 000000000..286fac813 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-3/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.skip(long) +location: + file: sos/mrtd/PassportService.java + method: "readDateOfExpiry()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-4/misuse.yml b/data/jmrtd/misuses/findbugs-4/misuse.yml new file mode 100644 index 000000000..f9c30994e --- /dev/null +++ b/data/jmrtd/misuses/findbugs-4/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.skip(long) +location: + file: sos/mrtd/PassportService.java + method: "readDocumentNumber()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-5/misuse.yml b/data/jmrtd/misuses/findbugs-5/misuse.yml new file mode 100644 index 000000000..db851d511 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-5/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.skip(long) +location: + file: sos/mrtd/PassportService.java + method: "readFace()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-6/misuse.yml b/data/jmrtd/misuses/findbugs-6/misuse.yml new file mode 100644 index 000000000..987128d4f --- /dev/null +++ b/data/jmrtd/misuses/findbugs-6/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.skip(long) +location: + file: sos/mrtd/PassportService.java + method: "readIssuingState()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-7/misuse.yml b/data/jmrtd/misuses/findbugs-7/misuse.yml new file mode 100644 index 000000000..48fc3b8a1 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-7/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.skip(long) +location: + file: sos/mrtd/PassportService.java + method: "readName()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-8/misuse.yml b/data/jmrtd/misuses/findbugs-8/misuse.yml new file mode 100644 index 000000000..2ce5026b5 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-8/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.skip(long) +location: + file: sos/mrtd/PassportService.java + method: "readNationality()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/misuses/findbugs-9/misuse.yml b/data/jmrtd/misuses/findbugs-9/misuse.yml new file mode 100644 index 000000000..ce4089c66 --- /dev/null +++ b/data/jmrtd/misuses/findbugs-9/misuse.yml @@ -0,0 +1,14 @@ +api: +- java.io.DataInputStream +characteristics: +- missing/condition/value_or_state +crash: false +description: > + Method ignores the result of java.io.DataInputStream.read(byte[], int, int) +location: + file: sos/mrtd/SecureMessagingWrapper.java + method: "readDO87(DataInputStream)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jmrtd/versions/51/version.yml b/data/jmrtd/versions/51/version.yml index 968d87fba..8d95443cb 100644 --- a/data/jmrtd/versions/51/version.yml +++ b/data/jmrtd/versions/51/version.yml @@ -5,4 +5,24 @@ build: src: src/ misuses: - '1' +- 'findbugs-0' +- 'findbugs-1' +- 'findbugs-2' +- 'findbugs-3' +- 'findbugs-4' +- 'findbugs-5' +- 'findbugs-6' +- 'findbugs-7' +- 'findbugs-8' +- 'findbugs-9' +- 'findbugs-10' +- 'findbugs-11' +- 'findbugs-12' +- 'findbugs-13' +- 'findbugs-14' +- 'findbugs-15' +- 'findbugs-16' +- 'findbugs-17' +- 'findbugs-18' +- 'findbugs-19' revision: 50 diff --git a/data/jodatime/misuses/findbugs-1/misuse.yml b/data/jodatime/misuses/findbugs-1/misuse.yml new file mode 100644 index 000000000..640466a0e --- /dev/null +++ b/data/jodatime/misuses/findbugs-1/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.Integer +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Invocation of inefficient new Integer(int) constructor, better to use Integer.valueOf(int) instead. +location: + file: org/joda/time/contrib/hibernate/PersistentLocalTimeExact.java + method: "nullSafeSet(PreparedStatement, Object, int)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/jodatime/versions/1231/version.yml b/data/jodatime/versions/1231/version.yml index 589d6e48f..747489d60 100644 --- a/data/jodatime/versions/1231/version.yml +++ b/data/jodatime/versions/1231/version.yml @@ -5,4 +5,5 @@ build: src: JodaTimeContrib/hibernate/src/java/ misuses: - '1' +- 'findbugs-1' revision: 4f0fa2ece24061b8e47e793ada1cb1b6804df334~1 diff --git a/data/lucene/misuses/findbugs-0/misuse.yml b/data/lucene/misuses/findbugs-0/misuse.yml new file mode 100644 index 000000000..a2828659c --- /dev/null +++ b/data/lucene/misuses/findbugs-0/misuse.yml @@ -0,0 +1,14 @@ +api: +- byte array +characteristics: +- superfluous/call +crash: false +description: > + Invocation of toString on buffer variable which is a byte array. +location: + file: org/apache/lucene/store/BufferedIndexInput.java + method: "setBufferSize(int)" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/lucene/misuses/findbugs-16/misuse.yml b/data/lucene/misuses/findbugs-16/misuse.yml new file mode 100644 index 000000000..c9ff6b6b3 --- /dev/null +++ b/data/lucene/misuses/findbugs-16/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.String +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Comparison of String objects using == or != and not using equals(). +location: + file: org/apache/lucene/analysis/standard/StandardFilter.java + method: "incrementToken()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/lucene/misuses/findbugs-17/misuse.yml b/data/lucene/misuses/findbugs-17/misuse.yml new file mode 100644 index 000000000..c9ff6b6b3 --- /dev/null +++ b/data/lucene/misuses/findbugs-17/misuse.yml @@ -0,0 +1,15 @@ +api: +- java.lang.String +characteristics: +- superfluous/call +- missing/call +crash: false +description: > + Comparison of String objects using == or != and not using equals(). +location: + file: org/apache/lucene/analysis/standard/StandardFilter.java + method: "incrementToken()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/lucene/misuses/findbugs-18/misuse.yml b/data/lucene/misuses/findbugs-18/misuse.yml new file mode 100644 index 000000000..a36e1f1f3 --- /dev/null +++ b/data/lucene/misuses/findbugs-18/misuse.yml @@ -0,0 +1,14 @@ +api: +- org.apache.lucene.index.MergeScheduler +characteristics: +- missing/condition/synchronization +crash: false +description: > + setMergeScheduler(MergeScheduler) is synchronized but not getMergeScheduler() +location: + file: org/apache/lucene/index/IndexWriter.java + method: "getMergeScheduler()" +internal: false +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/lucene/misuses/findbugs-19/misuse.yml b/data/lucene/misuses/findbugs-19/misuse.yml new file mode 100644 index 000000000..eddc3535d --- /dev/null +++ b/data/lucene/misuses/findbugs-19/misuse.yml @@ -0,0 +1,14 @@ +api: +- org.apache.lucene.index.IndexReader +characteristics: +- missing/call +crash: false +description: > + clone() does not call super.clone() +location: + file: org/apache/lucene/index/SegmentReader.java + method: "clone()" +internal: true +source: + name: Findbugs + url: http://findbugs.sourceforge.net/index.html diff --git a/data/lucene/versions/1918/version.yml b/data/lucene/versions/1918/version.yml index 405b587fa..654406b82 100644 --- a/data/lucene/versions/1918/version.yml +++ b/data/lucene/versions/1918/version.yml @@ -7,6 +7,11 @@ misuses: - '2' - 'mudetect-5' - 'mudetect-9' +- 'findbugs-0' +- 'findbugs-16' +- 'findbugs-17' +- 'findbugs-18' +- 'findbugs-19' - 'tikanga-0' - 'tikanga-1' revision: 0cb96adf12063c1ec2d586d0cec6a209abe9a2dd~1 diff --git a/data/synthetic/misuses/doublecheckedlocking/misuse.yml b/data/synthetic/misuses/doublecheckedlocking/misuse.yml new file mode 100644 index 000000000..f6653dc6c --- /dev/null +++ b/data/synthetic/misuses/doublecheckedlocking/misuse.yml @@ -0,0 +1,17 @@ +api: +- DoubleCheckedLocking +characteristics: +- superfluous/condition/synchronization +- missing/condition/synchronization +crash: false +description: > + Avoid double checked locking as the Java memory model does not guarantee that the threads that see a non-null field value but do not acquire the lock will see all of the writes used to initialize the object. +location: + file: DoubleCheckedLocking.java + method: getResource() +fix: + description: > + Use the volatile field for double checked locking. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/doublecheckedlocking/patterns/DoubleCheckedLockingCorrected.java b/data/synthetic/misuses/doublecheckedlocking/patterns/DoubleCheckedLockingCorrected.java new file mode 100644 index 000000000..151fb3c2d --- /dev/null +++ b/data/synthetic/misuses/doublecheckedlocking/patterns/DoubleCheckedLockingCorrected.java @@ -0,0 +1,15 @@ +public class DoubleCheckedLockingCorrected { + + private volatile Object resource = null; + public Object getResource() { + if (resource == null) { + synchronized(this) { + if (resource == null) + resource = new Object(); + } + } + return resource; + } + + // other functions and members... +} diff --git a/data/synthetic/misuses/exceptionnotthrown/misuse.yml b/data/synthetic/misuses/exceptionnotthrown/misuse.yml new file mode 100644 index 000000000..18a7e7b6e --- /dev/null +++ b/data/synthetic/misuses/exceptionnotthrown/misuse.yml @@ -0,0 +1,17 @@ +api: +- java.lang.Exception +characteristics: +- superfluous/exception_handling +- missing/exception_handling +crash: false +description: > + Exception created but later dropped, rather than thrown +location: + file: ExceptionNotThrown.java + method: foo() +fix: + description: > + Throw the created exception. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/exceptionnotthrown/patterns/ExceptionNotThrownCorrected.java b/data/synthetic/misuses/exceptionnotthrown/patterns/ExceptionNotThrownCorrected.java new file mode 100644 index 000000000..897cf8b3e --- /dev/null +++ b/data/synthetic/misuses/exceptionnotthrown/patterns/ExceptionNotThrownCorrected.java @@ -0,0 +1,12 @@ +class ExceptionNotThrownCorrected { + private int x = -1; + + public void foo(){ + if (x < 0){ + throw new IllegalArgumentException("x must be non-negative"); + } + else{ + x++; + } + } +} diff --git a/data/synthetic/misuses/infiniterecursion/misuse.yml b/data/synthetic/misuses/infiniterecursion/misuse.yml new file mode 100644 index 000000000..45329007d --- /dev/null +++ b/data/synthetic/misuses/infiniterecursion/misuse.yml @@ -0,0 +1,17 @@ +api: +- InfiniteRecursion +characteristics: +- superfluos/method_call +- missing/condition/value +crash: false +description: > + Method by mistake calls itself resulting in infinite calls. +location: + file: InfiniteRecursion.java + method: foundType() +fix: + description: > + Method must return the variable. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/infiniterecursion/patterns/InfiniteRecursionCorrected.java b/data/synthetic/misuses/infiniterecursion/patterns/InfiniteRecursionCorrected.java new file mode 100644 index 000000000..8eaa19a4d --- /dev/null +++ b/data/synthetic/misuses/infiniterecursion/patterns/InfiniteRecursionCorrected.java @@ -0,0 +1,8 @@ +public class InfiniteRecursionCorrected { + + private String foundType; + + public String foundType() { + return this.foundType; + } +} diff --git a/data/synthetic/misuses/misshashcode/misuse.yml b/data/synthetic/misuses/misshashcode/misuse.yml new file mode 100644 index 000000000..55991d3f8 --- /dev/null +++ b/data/synthetic/misuses/misshashcode/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.Object (and subclasses) +characteristics: +- missing/condition/context +crash: false +description: > + Only the equals() method of a class has been overridden. +location: + file: Count.java + method: main(String[]) +fix: + description: > + Override hashCode() method also as equal objects must have equal hash codes. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/misshashcode/patterns/CorrectedCount.java b/data/synthetic/misuses/misshashcode/patterns/CorrectedCount.java new file mode 100644 index 000000000..89f4b7d9e --- /dev/null +++ b/data/synthetic/misuses/misshashcode/patterns/CorrectedCount.java @@ -0,0 +1,37 @@ +import java.util.HashMap; +import java.util.Map; + +class CorrectedCount { + int value; + + public CorrectedCount(int value) { + this.value = value; + } + + @Override + public boolean equals(Object o) { + if (o == this) + return true; + if (!(o instanceof CorrectedCount)) { + return false; + } + CorrectedCount count = (CorrectedCount) o; + return this.value == count.value; + } + + @Override + public int hashCode() { + int result = 17; + result = 31 * result + value; + return result; + } + + public static void main(String[] args) { + Map myMap = new HashMap(); + CorrectedCount count1 = new CorrectedCount(42); + myMap.put(count1, "Value"); + CorrectedCount count2 = new CorrectedCount(42); + System.out.println(count1.equals(count2)); // true + System.out.println(myMap.get(count1)); // Value + } +} diff --git a/data/synthetic/misuses/nonexistingclone/misuse.yml b/data/synthetic/misuses/nonexistingclone/misuse.yml new file mode 100644 index 000000000..02ce4862e --- /dev/null +++ b/data/synthetic/misuses/nonexistingclone/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.Cloneable +characteristics: +- missing/method_call +crash: false +description: > + Class implements Cloneable but does not define or use the clone method. +location: + file: NonExistingClone.java + method: NonExistingClone(int) +fix: + description: > + Define the clone method. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/nonexistingclone/patterns/NonExistingCloneCorrected.java b/data/synthetic/misuses/nonexistingclone/patterns/NonExistingCloneCorrected.java new file mode 100644 index 000000000..afb55c3a0 --- /dev/null +++ b/data/synthetic/misuses/nonexistingclone/patterns/NonExistingCloneCorrected.java @@ -0,0 +1,21 @@ +public class NonExistingCloneCorrected { + + private int aVar; + + public NonExistingCloneCorrected(int avar) { + this.aVar = avar; + } + + // other methods + + @Override + protected Object clone() { + NonExistingCloneCorrected nonExistingCloneCorrected = null; + try { + nonExistingCloneCorrected = (NonExistingCloneCorrected) super.clone(); + } catch (CloneNotSupportedException e) { + e.printStackTrace(); + } + return nonExistingCloneCorrected; + } +} diff --git a/data/synthetic/misuses/nosuchelementexception/misuse.yml b/data/synthetic/misuses/nosuchelementexception/misuse.yml new file mode 100644 index 000000000..83f1705e2 --- /dev/null +++ b/data/synthetic/misuses/nosuchelementexception/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.util.NoSuchElementException +characteristics: +- missing/exception_handling +crash: false +description: > + next() must throw NoSuchElementException +location: + file: NoSuchElementExceptionNotThrown.java + method: next() +fix: + description: > + Throw the NoSuchElementException. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/nosuchelementexception/patterns/NoSuchElementExceptionNotThrownCorrected.java b/data/synthetic/misuses/nosuchelementexception/patterns/NoSuchElementExceptionNotThrownCorrected.java new file mode 100644 index 000000000..e45f3fc7e --- /dev/null +++ b/data/synthetic/misuses/nosuchelementexception/patterns/NoSuchElementExceptionNotThrownCorrected.java @@ -0,0 +1,23 @@ +import java.util.Iterator; +import java.util.NoSuchElementException; + +class NoSuchElementExceptionNotThrownCorrected implements Iterator { + + @Override + public boolean hasNext() { + return false; + } + + @Override + public Integer next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + return null; + } + + @Override + public void remove() { + System.out.println("remove element"); + } +} diff --git a/data/synthetic/misuses/redundantnullcheck/misuse.yml b/data/synthetic/misuses/redundantnullcheck/misuse.yml new file mode 100644 index 000000000..7be43c820 --- /dev/null +++ b/data/synthetic/misuses/redundantnullcheck/misuse.yml @@ -0,0 +1,16 @@ +api: +- NullCheck +characteristics: +- superfluous/condition/null_check +crash: false +description: > + Redundant null check for an object which is guaranteed to be non-null +location: + file: NullCheck.java + method: main(String[]) +fix: + description: > + Remove the redundant null check +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/redundantnullcheck/patterns/CorrectedNullCheck.java b/data/synthetic/misuses/redundantnullcheck/patterns/CorrectedNullCheck.java new file mode 100644 index 000000000..56fc7c41c --- /dev/null +++ b/data/synthetic/misuses/redundantnullcheck/patterns/CorrectedNullCheck.java @@ -0,0 +1,8 @@ +class CorrectedNullCheck { + + public static void main(String[] args) { + CorrectedNullCheck c1 = new CorrectedNullCheck(); + int x = 0; + x = c1.hashCode(); + } +} diff --git a/data/synthetic/misuses/synconboolean/misuse.yml b/data/synthetic/misuses/synconboolean/misuse.yml new file mode 100644 index 000000000..1c3ae93fa --- /dev/null +++ b/data/synthetic/misuses/synconboolean/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.Integer +characteristics: +- superfluous/condition/synchronization +crash: false +description: > + The code synchronizes on a boxed class Boolean which has only two objects. +location: + file: SyncOnBoolean.java + method: foo() +fix: + description: > + Remove the synchronization on Boolean objects. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/synconboolean/patterns/SyncOnBooleanCorrected.java b/data/synthetic/misuses/synconboolean/patterns/SyncOnBooleanCorrected.java new file mode 100644 index 000000000..7a7954805 --- /dev/null +++ b/data/synthetic/misuses/synconboolean/patterns/SyncOnBooleanCorrected.java @@ -0,0 +1,14 @@ +class SyncOnBooleanCorrected { + + private static Boolean flag = Boolean.TRUE; + + public void foo(){ + synchronized(this){ + if(!flag){ + System.out.println("true condition"); + }else{ + System.out.println("false condition"); + } + } + } +} diff --git a/data/synthetic/misuses/synconboxedprimitive/misuse.yml b/data/synthetic/misuses/synconboxedprimitive/misuse.yml new file mode 100644 index 000000000..5ea12b6ca --- /dev/null +++ b/data/synthetic/misuses/synconboxedprimitive/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.Integer +characteristics: +- superfluous/condition/synchronization +crash: false +description: > + The code synchronizes on a boxed primitive constant, for example, an Integer, which may be cached and shared. +location: + file: SyncOnBoxedPrimitive.java + method: foo() +fix: + description: > + Remove the synchronization on Integer constant. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/synconboxedprimitive/patterns/SyncOnBoxedPrimitiveCorrected.java b/data/synthetic/misuses/synconboxedprimitive/patterns/SyncOnBoxedPrimitiveCorrected.java new file mode 100644 index 000000000..54891220d --- /dev/null +++ b/data/synthetic/misuses/synconboxedprimitive/patterns/SyncOnBoxedPrimitiveCorrected.java @@ -0,0 +1,12 @@ +class SyncOnBoxedPrimitiveCorrected { + + private Integer value = 0; + + public void foo(){ + synchronized(this){ + // some code + value++; + // some code + } + } +} diff --git a/data/synthetic/misuses/synconstring/misuse.yml b/data/synthetic/misuses/synconstring/misuse.yml new file mode 100644 index 000000000..6d202d6ad --- /dev/null +++ b/data/synthetic/misuses/synconstring/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.lang.String +characteristics: +- superfluous/condition/synchronization +crash: false +description: > + The code synchronizes on a string constant which is interned and shared accross all the classes. +location: + file: SyncOnStringLiteral.java + method: foo() +fix: + description: > + Remove the synchronization on string constant. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/synconstring/patterns/SyncOnStringLiteralCorrected.java b/data/synthetic/misuses/synconstring/patterns/SyncOnStringLiteralCorrected.java new file mode 100644 index 000000000..39422ecad --- /dev/null +++ b/data/synthetic/misuses/synconstring/patterns/SyncOnStringLiteralCorrected.java @@ -0,0 +1,10 @@ +class SyncOnStringLiteralCorrected { + + private final String LOCK = "LOCK"; + + public void foo() { + synchronized (this) { + System.out.println(LOCK); + } + } +} diff --git a/data/synthetic/misuses/unreleasedlock/misuse.yml b/data/synthetic/misuses/unreleasedlock/misuse.yml new file mode 100644 index 000000000..53523e5dd --- /dev/null +++ b/data/synthetic/misuses/unreleasedlock/misuse.yml @@ -0,0 +1,16 @@ +api: +- java.util.concurrent.locks.Lock +characteristics: +- missing/condition/synchronization +crash: false +description: > + The method does not release the lock in finally block. +location: + file: UnReleasedLock.java + method: foo() +fix: + description: > + Release the lock in finally block. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/unreleasedlock/patterns/UnReleasedLockCorrected.java b/data/synthetic/misuses/unreleasedlock/patterns/UnReleasedLockCorrected.java new file mode 100644 index 000000000..6730adf48 --- /dev/null +++ b/data/synthetic/misuses/unreleasedlock/patterns/UnReleasedLockCorrected.java @@ -0,0 +1,19 @@ +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +class UnReleasedLockCorrected { + + private final Lock activationLock = new ReentrantLock(); + + public void foo() { + try { + activationLock.lock(); + System.out.println("lock acquired"); + } catch (Exception ex) { + ex.printStackTrace(); + }finally { + if (activationLock != null) + activationLock.unlock(); + } + } +} diff --git a/data/synthetic/misuses/unsynchronizeddateformat/misuse.yml b/data/synthetic/misuses/unsynchronizeddateformat/misuse.yml new file mode 100644 index 000000000..6bfad8ab4 --- /dev/null +++ b/data/synthetic/misuses/unsynchronizeddateformat/misuse.yml @@ -0,0 +1,16 @@ +api: +- import java.text.DateFormat; +characteristics: +- missing/condition/synchronization +crash: false +description: > + DateFormat is inherently unsafe. +location: + file: UnsynchronizedDateFormat.java + method: convert(String) +fix: + description: > + Use DateFormat with synchronization. +internal: false +source: + name: Findbugs documentation diff --git a/data/synthetic/misuses/unsynchronizeddateformat/patterns/UnsynchronizedDateFormatCorrected.java b/data/synthetic/misuses/unsynchronizeddateformat/patterns/UnsynchronizedDateFormatCorrected.java new file mode 100644 index 000000000..49c946a56 --- /dev/null +++ b/data/synthetic/misuses/unsynchronizeddateformat/patterns/UnsynchronizedDateFormatCorrected.java @@ -0,0 +1,17 @@ +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class UnsynchronizedDateFormatCorrected { + + private final DateFormat format = new SimpleDateFormat("yyyyMMdd"); + + public Date convert(String source) throws ParseException { + synchronized (format) { + Date d = format.parse(source); + return d; + } + } + +} diff --git a/data/synthetic/versions/doublecheckedlocking/compile/build.gradle b/data/synthetic/versions/doublecheckedlocking/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/doublecheckedlocking/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/doublecheckedlocking/compile/src/DoubleCheckedLocking.java b/data/synthetic/versions/doublecheckedlocking/compile/src/DoubleCheckedLocking.java new file mode 100644 index 000000000..2a3cdebe7 --- /dev/null +++ b/data/synthetic/versions/doublecheckedlocking/compile/src/DoubleCheckedLocking.java @@ -0,0 +1,14 @@ +public class DoubleCheckedLocking { + + private Object resource = null; + + public Object getResource() { + if (resource == null) + synchronized (this) { + if (resource == null) + resource = new Object(); + } + return resource; + } + // other functions and members... +} diff --git a/data/synthetic/versions/doublecheckedlocking/version.yml b/data/synthetic/versions/doublecheckedlocking/version.yml new file mode 100644 index 000000000..48ce5b225 --- /dev/null +++ b/data/synthetic/versions/doublecheckedlocking/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'doublecheckedlocking' diff --git a/data/synthetic/versions/exceptionnotthrown/compile/build.gradle b/data/synthetic/versions/exceptionnotthrown/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/exceptionnotthrown/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/exceptionnotthrown/compile/src/ExceptionNotThrown.java b/data/synthetic/versions/exceptionnotthrown/compile/src/ExceptionNotThrown.java new file mode 100644 index 000000000..1870703cf --- /dev/null +++ b/data/synthetic/versions/exceptionnotthrown/compile/src/ExceptionNotThrown.java @@ -0,0 +1,12 @@ +class ExceptionNotThrown { + private int x = -1; + + public void foo(){ + if (x < 0){ + new IllegalArgumentException("x must be non-negative"); + } + else{ + x++; + } + } +} diff --git a/data/synthetic/versions/exceptionnotthrown/version.yml b/data/synthetic/versions/exceptionnotthrown/version.yml new file mode 100644 index 000000000..6efafba94 --- /dev/null +++ b/data/synthetic/versions/exceptionnotthrown/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'exceptionnotthrown' diff --git a/data/synthetic/versions/infiniterecursion/compile/build.gradle b/data/synthetic/versions/infiniterecursion/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/infiniterecursion/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/infiniterecursion/compile/src/InfiniteRecursion.java b/data/synthetic/versions/infiniterecursion/compile/src/InfiniteRecursion.java new file mode 100644 index 000000000..1f7dd2e2a --- /dev/null +++ b/data/synthetic/versions/infiniterecursion/compile/src/InfiniteRecursion.java @@ -0,0 +1,14 @@ +public class InfiniteRecursion { + + private String foundType; + + public String foundType() { + return this.foundType(); + } + + public static void main(String[] args) { + InfiniteRecursion recursionTest = new InfiniteRecursion(); + recursionTest.foundType(); + } + +} \ No newline at end of file diff --git a/data/synthetic/versions/infiniterecursion/version.yml b/data/synthetic/versions/infiniterecursion/version.yml new file mode 100644 index 000000000..37ad2f27a --- /dev/null +++ b/data/synthetic/versions/infiniterecursion/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'infiniterecursion' diff --git a/data/synthetic/versions/misshashcode/compile/build.gradle b/data/synthetic/versions/misshashcode/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/misshashcode/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/misshashcode/compile/src/Count.java b/data/synthetic/versions/misshashcode/compile/src/Count.java new file mode 100644 index 000000000..69b10bc42 --- /dev/null +++ b/data/synthetic/versions/misshashcode/compile/src/Count.java @@ -0,0 +1,29 @@ +import java.util.HashMap; +import java.util.Map; + +class Count { + int value; + + public Count(int value) { + this.value = value; + } + + @Override + public boolean equals(Object o) { + if (o == this) return true; + if (!(o instanceof Count)) { + return false; + } + Count count = (Count) o; + return this.value == count.value; + } + + public static void main(String[] args) { + Map myMap = new HashMap(); + Count count1 = new Count(42); + myMap.put(count1, "Value"); + Count count2 = new Count(42); + System.out.println(count1.equals(count2)); // true + System.out.println(myMap.get(count2)); // null + } +} diff --git a/data/synthetic/versions/misshashcode/version.yml b/data/synthetic/versions/misshashcode/version.yml new file mode 100644 index 000000000..b18c4410f --- /dev/null +++ b/data/synthetic/versions/misshashcode/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'misshashcode' diff --git a/data/synthetic/versions/nonexistingclone/compile/build.gradle b/data/synthetic/versions/nonexistingclone/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/nonexistingclone/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/nonexistingclone/compile/src/NonExistingClone.java b/data/synthetic/versions/nonexistingclone/compile/src/NonExistingClone.java new file mode 100644 index 000000000..59265abd0 --- /dev/null +++ b/data/synthetic/versions/nonexistingclone/compile/src/NonExistingClone.java @@ -0,0 +1,10 @@ +public class NonExistingClone implements Cloneable { + + private int aVar; + + public NonExistingClone(int avar) { + this.aVar = avar; + } + + // other methods +} diff --git a/data/synthetic/versions/nonexistingclone/version.yml b/data/synthetic/versions/nonexistingclone/version.yml new file mode 100644 index 000000000..e50ab0129 --- /dev/null +++ b/data/synthetic/versions/nonexistingclone/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'nonexistingclone' diff --git a/data/synthetic/versions/nosuchelementexception/compile/build.gradle b/data/synthetic/versions/nosuchelementexception/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/nosuchelementexception/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/nosuchelementexception/compile/src/NoSuchElementExceptionNotThrown.java b/data/synthetic/versions/nosuchelementexception/compile/src/NoSuchElementExceptionNotThrown.java new file mode 100644 index 000000000..3da0a7be5 --- /dev/null +++ b/data/synthetic/versions/nosuchelementexception/compile/src/NoSuchElementExceptionNotThrown.java @@ -0,0 +1,20 @@ +import java.util.Iterator; + +public class NoSuchElementExceptionNotThrown implements Iterator { + + @Override + public boolean hasNext() { + return false; + } + + @Override + public Integer next() { + return null; + } + + @Override + public void remove() { + System.out.println("remove element"); + } + +} \ No newline at end of file diff --git a/data/synthetic/versions/nosuchelementexception/version.yml b/data/synthetic/versions/nosuchelementexception/version.yml new file mode 100644 index 000000000..a8f0d0f33 --- /dev/null +++ b/data/synthetic/versions/nosuchelementexception/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'nosuchelementexception' diff --git a/data/synthetic/versions/redundantnullcheck/compile/build.gradle b/data/synthetic/versions/redundantnullcheck/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/redundantnullcheck/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/redundantnullcheck/compile/src/NullCheck.java b/data/synthetic/versions/redundantnullcheck/compile/src/NullCheck.java new file mode 100644 index 000000000..b91660405 --- /dev/null +++ b/data/synthetic/versions/redundantnullcheck/compile/src/NullCheck.java @@ -0,0 +1,12 @@ +class NullCheck { + + public static void main(String[] args) { + NullCheck c1 = new NullCheck(); + int x = 0; + if (c1 != null){ + x = c1.hashCode(); + }else{ + // do something else + } + } +} diff --git a/data/synthetic/versions/redundantnullcheck/version.yml b/data/synthetic/versions/redundantnullcheck/version.yml new file mode 100644 index 000000000..985e5c544 --- /dev/null +++ b/data/synthetic/versions/redundantnullcheck/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'redundantnullcheck' diff --git a/data/synthetic/versions/synconboolean/compile/build.gradle b/data/synthetic/versions/synconboolean/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/synconboolean/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/synconboolean/compile/src/SyncOnBoolean.java b/data/synthetic/versions/synconboolean/compile/src/SyncOnBoolean.java new file mode 100644 index 000000000..541af6e24 --- /dev/null +++ b/data/synthetic/versions/synconboolean/compile/src/SyncOnBoolean.java @@ -0,0 +1,14 @@ +class SyncOnBoolean { + + private static Boolean flag = Boolean.TRUE; + + public void foo(){ + synchronized(flag){ + if(!flag){ + System.out.println("true condition"); + }else{ + System.out.println("false condition"); + } + } + } +} diff --git a/data/synthetic/versions/synconboolean/version.yml b/data/synthetic/versions/synconboolean/version.yml new file mode 100644 index 000000000..2a44a6bd3 --- /dev/null +++ b/data/synthetic/versions/synconboolean/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'synconboolean' diff --git a/data/synthetic/versions/synconboxedprimitive/compile/build.gradle b/data/synthetic/versions/synconboxedprimitive/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/synconboxedprimitive/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/synconboxedprimitive/compile/src/SyncOnBoxedPrimitive.java b/data/synthetic/versions/synconboxedprimitive/compile/src/SyncOnBoxedPrimitive.java new file mode 100644 index 000000000..3c1c5f7c7 --- /dev/null +++ b/data/synthetic/versions/synconboxedprimitive/compile/src/SyncOnBoxedPrimitive.java @@ -0,0 +1,12 @@ +class SyncOnBoxedPrimitive { + + private Integer value = 0; + + public void foo(){ + synchronized(value){ + // some code + value++; + // some code + } + } +} diff --git a/data/synthetic/versions/synconboxedprimitive/version.yml b/data/synthetic/versions/synconboxedprimitive/version.yml new file mode 100644 index 000000000..66a092d07 --- /dev/null +++ b/data/synthetic/versions/synconboxedprimitive/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'synconboxedprimitive' diff --git a/data/synthetic/versions/synconstring/compile/build.gradle b/data/synthetic/versions/synconstring/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/synconstring/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/synconstring/compile/src/SyncOnStringLiteral.java b/data/synthetic/versions/synconstring/compile/src/SyncOnStringLiteral.java new file mode 100644 index 000000000..112e75db6 --- /dev/null +++ b/data/synthetic/versions/synconstring/compile/src/SyncOnStringLiteral.java @@ -0,0 +1,10 @@ +class SyncOnStringLiteral { + + private final String LOCK = "LOCK"; + + public void foo() { + synchronized (LOCK) { + System.out.println(LOCK); + } + } +} diff --git a/data/synthetic/versions/synconstring/version.yml b/data/synthetic/versions/synconstring/version.yml new file mode 100644 index 000000000..3f3a750b3 --- /dev/null +++ b/data/synthetic/versions/synconstring/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'synconstring' diff --git a/data/synthetic/versions/unreleasedlock/compile/build.gradle b/data/synthetic/versions/unreleasedlock/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/unreleasedlock/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/unreleasedlock/compile/src/UnReleasedLock.java b/data/synthetic/versions/unreleasedlock/compile/src/UnReleasedLock.java new file mode 100644 index 000000000..e933e46d9 --- /dev/null +++ b/data/synthetic/versions/unreleasedlock/compile/src/UnReleasedLock.java @@ -0,0 +1,20 @@ +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReentrantLock; + +public class UnReleasedLock { + + private final Lock activationLock = new ReentrantLock(); + + public void foo() { + try { + activationLock.lock(); + System.out.println("lock acquired"); + } catch (Exception ex) { + ex.printStackTrace(); + }/*finally { + if (activationLock != null) + activationLock.unlock(); + }*/ + } + +} \ No newline at end of file diff --git a/data/synthetic/versions/unreleasedlock/version.yml b/data/synthetic/versions/unreleasedlock/version.yml new file mode 100644 index 000000000..87b012993 --- /dev/null +++ b/data/synthetic/versions/unreleasedlock/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'unreleasedlock' diff --git a/data/synthetic/versions/unsynchronizeddateformat/compile/build.gradle b/data/synthetic/versions/unsynchronizeddateformat/compile/build.gradle new file mode 100644 index 000000000..c048af992 --- /dev/null +++ b/data/synthetic/versions/unsynchronizeddateformat/compile/build.gradle @@ -0,0 +1,9 @@ +apply plugin: 'java' + +sourceSets { + main { + java { + srcDir 'src' + } + } +} diff --git a/data/synthetic/versions/unsynchronizeddateformat/compile/src/UnsynchronizedDateFormat.java b/data/synthetic/versions/unsynchronizeddateformat/compile/src/UnsynchronizedDateFormat.java new file mode 100644 index 000000000..eed864a39 --- /dev/null +++ b/data/synthetic/versions/unsynchronizeddateformat/compile/src/UnsynchronizedDateFormat.java @@ -0,0 +1,14 @@ +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +public class UnsynchronizedDateFormat { + + private final DateFormat format = new SimpleDateFormat("yyyyMMdd"); + + public Date convert(String source) throws ParseException { + Date d = format.parse(source); + return d; + } +} \ No newline at end of file diff --git a/data/synthetic/versions/unsynchronizeddateformat/version.yml b/data/synthetic/versions/unsynchronizeddateformat/version.yml new file mode 100644 index 000000000..757d9a564 --- /dev/null +++ b/data/synthetic/versions/unsynchronizeddateformat/version.yml @@ -0,0 +1,7 @@ +build: + classes: build/classes/main/ + commands: + - gradle :compileJava + src: src/ +misuses: +- 'unsynchronizeddateformat'