{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/comments/90763170","pull_request_review_id":11282310,"id":90763170,"diff_hunk":"@@ -0,0 +1,80 @@\n+\"Explicit thread priority\",\"Setting thread priorities to control interactions between threads is not portable, and may not have the desired effect.\",\"warning\",\"Avoid using thread priorities. The effect is unpredictable and not portable.\",\"src/main/java/org/apache/commons/io/FileCleaningTracker.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileCleaningTracker.java\",\"211\",\"13\",\"211\",\"44\"\n+\"Incorrect lazy initialization of a static field\",\"Initializing a static field without synchronization can be problematic in a multi-threaded context.\",\"warning\",\"Incorrect lazy initialization of static field [[\"\"SKIP_BYTE_BUFFER\"\"|\"\"relative://src/main/java/org/apache/commons/io/IOUtils.java:170:6561:16\"\"]]: Missing synchronization.\",\"src/main/java/org/apache/commons/io/IOUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/IOUtils.java\",\"2718\",\"13\",\"2718\",\"57\"\n+\"Incorrect lazy initialization of a static field\",\"Initializing a static field without synchronization can be problematic in a multi-threaded context.\",\"warning\",\"Incorrect lazy initialization of static field [[\"\"SKIP_CHAR_BUFFER\"\"|\"\"relative://src/main/java/org/apache/commons/io/IOUtils.java:169:6517:16\"\"]]: Missing synchronization.\",\"src/main/java/org/apache/commons/io/IOUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/IOUtils.java\",\"2793\",\"13\",\"2793\",\"57\"\n+\"Busy wait\",\"Calling 'Thread.sleep' to control thread interaction is less effective than waiting for a notification and may also result in race conditions. Merely synchronizing over shared variables in a loop to control thread interaction may waste system resources and cause performance problems.\",\"warning\",\"Prefer wait/notify or java.util.concurrent to communicate between threads.\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1708\",\"21\",\"1708\",\"59\"\n+\"Busy wait\",\"Calling 'Thread.sleep' to control thread interaction is less effective than waiting for a notification and may also result in race conditions. Merely synchronizing over shared variables in a loop to control thread interaction may waste system resources and cause performance problems.\",\"warning\",\"Prefer wait/notify or java.util.concurrent to communicate between threads.\",\"src/main/java/org/apache/commons/io/input/Tailer.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/Tailer.java\",\"418\",\"21\",\"418\",\"46\"\n+\"Busy wait\",\"Calling 'Thread.sleep' to control thread interaction is less effective than waiting for a notification and may also result in race conditions. Merely synchronizing over shared variables in a loop to control thread interaction may waste system resources and cause performance problems.\",\"warning\",\"Prefer wait/notify or java.util.concurrent to communicate between threads.\",\"src/main/java/org/apache/commons/io/input/Tailer.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/Tailer.java\",\"473\",\"17\",\"473\",\"42\"\n+\"Busy wait\",\"Calling 'Thread.sleep' to control thread interaction is less effective than waiting for a notification and may also result in race conditions. Merely synchronizing over shared variables in a loop to control thread interaction may waste system resources and cause performance problems.\",\"warning\",\"Prefer wait/notify or java.util.concurrent to communicate between threads.\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"188\",\"17\",\"188\",\"39\"\n+\"Dereferenced variable may be null\",\"Dereferencing a variable whose value may be 'null' may cause a 'NullPointerException'.\",\"warning\",\"Variable [[\"\"reader\"\"|\"\"relative://src/main/java/org/apache/commons/io/input/Tailer.java:406:15061:31\"\"]] may be null here.\",\"src/main/java/org/apache/commons/io/input/Tailer.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/Tailer.java\",\"463\",\"25\",\"463\",\"30\"\n+\"Discarded exception\",\"Dropping an exception may allow an unusual program state to continue without recovery.\",\"warning\",\"Exceptions should not be dropped.\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1580\",\"11\",\"1580\",\"41\"\n+\"Discarded exception\",\"Dropping an exception may allow an unusual program state to continue without recovery.\",\"warning\",\"Exceptions should not be dropped.\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"189\",\"15\",\"189\",\"56\"\n+\"Close input resource\",\"A resource that is opened for reading but not closed may cause a resource leak.\",\"error\",\"This BOMInputStream is not always closed on method exit.\",\"src/main/java/org/apache/commons/io/input/XmlStreamReader.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/XmlStreamReader.java\",\"269\",\"36\",\"269\",\"108\"\n+\"Close input resource\",\"A resource that is opened for reading but not closed may cause a resource leak.\",\"error\",\"This BOMInputStream is not always closed on method exit.\",\"src/main/java/org/apache/commons/io/input/XmlStreamReader.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/XmlStreamReader.java\",\"270\",\"36\",\"270\",\"81\"\n+\"Ignored error status of call\",\"Ignoring an exceptional value that is returned by a method may cause subsequent code to fail.\",\"recommendation\",\"Method doCopyFile ignores exceptional return value of File.setLastModified.\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1145\",\"13\",\"1145\",\"60\"\n+\"Ignored error status of call\",\"Ignoring an exceptional value that is returned by a method may cause subsequent code to fail.\",\"recommendation\",\"Method doCopyDirectory ignores exceptional return value of File.setLastModified.\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1430\",\"13\",\"1430\",\"58\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because CharSequence is not serializable.\",\"src/main/java/org/apache/commons/io/input/CharSequenceReader.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/CharSequenceReader.java\",\"36\",\"32\",\"36\",\"43\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because Comparator<File> is not serializable.\",\"src/main/java/org/apache/commons/io/comparator/ReverseComparator.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/comparator/ReverseComparator.java\",\"33\",\"36\",\"33\",\"43\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because Comparator<File> is not serializable.\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"128\",\"36\",\"128\",\"45\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because IOFileFilter is not serializable.\",\"src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java\",\"44\",\"38\",\"44\",\"48\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because IOFileFilter is not serializable.\",\"src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java\",\"42\",\"38\",\"42\",\"48\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because IOFileFilter is not serializable.\",\"src/main/java/org/apache/commons/io/filefilter/NotFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/NotFileFilter.java\",\"33\",\"32\",\"33\",\"37\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because FileAlterationListener is not serializable.\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"125\",\"48\",\"125\",\"87\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because FileFilter is not serializable.\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"127\",\"30\",\"127\",\"39\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because FileFilter is not serializable.\",\"src/main/java/org/apache/commons/io/filefilter/DelegateFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/DelegateFileFilter.java\",\"39\",\"30\",\"39\",\"39\"\n+\"Non-serializable field\",\"A non-transient field in a serializable class must also be serializable otherwise it causes the class to fail to serialize with a 'NotSerializableException'.\",\"warning\",\"This field is in a serializable class,  but is not serializable itself because FilenameFilter is not serializable.\",\"src/main/java/org/apache/commons/io/filefilter/DelegateFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/DelegateFileFilter.java\",\"37\",\"34\",\"37\",\"47\"\n+\"Missing Locale parameter to toUpperCase() or toLowerCase()\",\"Calling 'String.toUpperCase()' or 'String.toLowerCase()' without specifying the locale may cause unexpected results for certain default locales.\",\"recommendation\",\"toUpperCase without locale parameter.\",\"src/main/java/org/apache/commons/io/input/XmlStreamReader.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/XmlStreamReader.java\",\"745\",\"32\",\"745\",\"55\"\n+\"Missing Locale parameter to toUpperCase() or toLowerCase()\",\"Calling 'String.toUpperCase()' or 'String.toLowerCase()' without specifying the locale may cause unexpected results for certain default locales.\",\"recommendation\",\"toUpperCase without locale parameter.\",\"src/main/java/org/apache/commons/io/output/XmlStreamWriter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/XmlStreamWriter.java\",\"172\",\"36\",\"172\",\"59\"\n+\"Missing Locale parameter to toUpperCase() or toLowerCase()\",\"Calling 'String.toUpperCase()' or 'String.toLowerCase()' without specifying the locale may cause unexpected results for certain default locales.\",\"recommendation\",\"toUpperCase without locale parameter.\",\"src/main/java/org/apache/commons/io/ByteOrderMark.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/ByteOrderMark.java\",\"185\",\"28\",\"185\",\"77\"\n+\"Mutually-dependent types\",\"Mutual dependency between types makes code difficult to understand and test.\",\"recommendation\",\"This type and type [[\"\"IOUtils\"\"|\"\"relative://src/main/java/org/apache/commons/io/IOUtils.java:100:4192:7\"\"]] are mutually dependent.\",\"src/main/java/org/apache/commons/io/output/ByteArrayOutputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/ByteArrayOutputStream.java\",\"57\",\"14\",\"57\",\"34\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method toString is duplicated in [[\"\"org.apache.commons.io.filefilter.OrFileFilter\"\"|\"\"relative://src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java:145:4336:8\"\"]].\",\"src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java\",\"153\",\"19\",\"153\",\"26\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method resetCount is duplicated in [[\"\"org.apache.commons.io.output.CountingOutputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/output/CountingOutputStream.java:86:3021:10\"\"]].\",\"src/main/java/org/apache/commons/io/input/CountingInputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/CountingInputStream.java\",\"107\",\"16\",\"107\",\"25\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method mark is duplicated in [[\"\"org.apache.commons.io.input.NullInputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/input/NullInputStream.java:158:4876:4\"\"]].\",\"src/main/java/org/apache/commons/io/input/NullReader.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/NullReader.java\",\"141\",\"30\",\"141\",\"33\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method resetCount is duplicated in [[\"\"org.apache.commons.io.input.CountingInputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/input/CountingInputStream.java:107:3626:10\"\"]].\",\"src/main/java/org/apache/commons/io/output/CountingOutputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/CountingOutputStream.java\",\"86\",\"16\",\"86\",\"25\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method toString is duplicated in [[\"\"org.apache.commons.io.filefilter.AndFileFilter\"\"|\"\"relative://src/main/java/org/apache/commons/io/filefilter/AndFileFilter.java:153:4515:8\"\"]].\",\"src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/OrFileFilter.java\",\"145\",\"19\",\"145\",\"26\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method flush is duplicated in [[\"\"org.apache.commons.io.output.ProxyWriter\"\"|\"\"relative://src/main/java/org/apache/commons/io/output/ProxyWriter.java:208:6333:5\"\"]].\",\"src/main/java/org/apache/commons/io/output/ProxyOutputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/ProxyOutputStream.java\",\"102\",\"17\",\"102\",\"21\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method close is duplicated in [[\"\"org.apache.commons.io.output.ProxyWriter\"\"|\"\"relative://src/main/java/org/apache/commons/io/output/ProxyWriter.java:221:6647:5\"\"]].\",\"src/main/java/org/apache/commons/io/output/ProxyOutputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/ProxyOutputStream.java\",\"115\",\"17\",\"115\",\"21\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method flush is duplicated in [[\"\"org.apache.commons.io.output.ProxyOutputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/output/ProxyOutputStream.java:102:3336:5\"\"]].\",\"src/main/java/org/apache/commons/io/output/ProxyWriter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/ProxyWriter.java\",\"208\",\"17\",\"208\",\"21\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method close is duplicated in [[\"\"org.apache.commons.io.output.ProxyOutputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/output/ProxyOutputStream.java:115:3650:5\"\"]].\",\"src/main/java/org/apache/commons/io/output/ProxyWriter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/ProxyWriter.java\",\"221\",\"17\",\"221\",\"21\"\n+\"Duplicate method\",\"Duplicated methods make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"Method mark is duplicated in [[\"\"org.apache.commons.io.input.NullReader\"\"|\"\"relative://src/main/java/org/apache/commons/io/input/NullReader.java:141:4390:4\"\"]].\",\"src/main/java/org/apache/commons/io/input/NullInputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/NullInputStream.java\",\"158\",\"30\",\"158\",\"33\"\n+\"Mostly duplicate method\",\"Methods in which most of the lines are duplicated in another method make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"83% of the statements in read are duplicated in [[\"\"NullInputStream.read()\"\"|\"\"relative://src/main/java/org/apache/commons/io/input/NullInputStream.java:187:5773:4\"\"]].\",\"src/main/java/org/apache/commons/io/input/NullReader.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/NullReader.java\",\"170\",\"16\",\"170\",\"19\"\n+\"Mostly duplicate method\",\"Methods in which most of the lines are duplicated in another method make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"83% of the statements in read are duplicated in [[\"\"NullReader.read()\"\"|\"\"relative://src/main/java/org/apache/commons/io/input/NullReader.java:170:5297:4\"\"]].\",\"src/main/java/org/apache/commons/io/input/NullInputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/NullInputStream.java\",\"187\",\"16\",\"187\",\"19\"\n+\"Mostly similar file\",\"Files in which most of the lines are similar to those in another file make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"91% of the lines in SuffixFileFilter are similar to lines in [[\"\"PrefixFileFilter\"\"|\"\"relative://src/main/java/org/apache/commons/io/filefilter/PrefixFileFilter.java:0:0:0\"\"]].\",\"src/main/java/org/apache/commons/io/filefilter/SuffixFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/SuffixFileFilter.java\",\"0\",\"0\",\"0\",\"0\"\n+\"Mostly similar file\",\"Files in which most of the lines are similar to those in another file make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"86% of the lines in TaggedOutputStream are similar to lines in [[\"\"TaggedInputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/input/TaggedInputStream.java:0:0:0\"\"]].\",\"src/main/java/org/apache/commons/io/output/TaggedOutputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/TaggedOutputStream.java\",\"0\",\"0\",\"0\",\"0\"\n+\"Mostly similar file\",\"Files in which most of the lines are similar to those in another file make code more difficult to understand and introduce a risk of changes being made to only one copy.\",\"recommendation\",\"86% of the lines in TaggedInputStream are similar to lines in [[\"\"TaggedOutputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/output/TaggedOutputStream.java:0:0:0\"\"]].\",\"src/main/java/org/apache/commons/io/input/TaggedInputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/TaggedInputStream.java\",\"0\",\"0\",\"0\",\"0\"\n+\"Inefficient empty string test\",\"Checking a string for equality with an empty string is inefficient.\",\"recommendation\",\"Inefficient comparison to empty string, check for zero length instead.\",\"src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/ReversedLinesFileReader.java\",\"188\",\"12\",\"188\",\"26\"\n+\"Empty statement\",\"An empty statement hinders readability.\",\"recommendation\",\"This empty statement should be deleted.\",\"src/main/java/org/apache/commons/io/output/WriterOutputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/WriterOutputStream.java\",\"339\",\"10\",\"339\",\"10\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileCleaningTracker.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileCleaningTracker.java\",\"222\",\"20\",\"222\",\"44\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"293\",\"17\",\"293\",\"39\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"354\",\"17\",\"354\",\"40\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"907\",\"21\",\"907\",\"61\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"995\",\"33\",\"995\",\"62\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1072\",\"34\",\"1072\",\"61\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1177\",\"32\",\"1177\",\"60\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1183\",\"33\",\"1183\",\"62\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1406\",\"17\",\"1406\",\"46\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1414\",\"13\",\"1414\",\"39\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"162\",\"13\",\"162\",\"28\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FilenameUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FilenameUtils.java\",\"666\",\"37\",\"666\",\"76\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/output/FileWriterWithEncoding.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/FileWriterWithEncoding.java\",\"251\",\"17\",\"251\",\"43\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileDeleteStrategy.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileDeleteStrategy.java\",\"72\",\"37\",\"72\",\"66\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/FileDeleteStrategy.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileDeleteStrategy.java\",\"93\",\"38\",\"93\",\"68\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A == false\"\" can be simplified to \"\"!A\"\".\",\"src/main/java/org/apache/commons/io/output/LockableFileWriter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/LockableFileWriter.java\",\"274\",\"17\",\"274\",\"43\"\n+\"Unnecessarily complex boolean expression\",\"Boolean expressions that are unnecessarily complicated hinder readability.\",\"recommendation\",\"Expressions of the form \"\"A ? true : false\"\" can be simplified to \"\"A\"\".\",\"src/main/java/org/apache/commons/io/IOUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/IOUtils.java\",\"2684\",\"32\",\"2684\",\"59\"\n+\"Empty branch of conditional, or empty loop body\",\"An undocumented empty block or statement hinders readability. It may also indicate incomplete code.\",\"warning\",\"The body of a loop should not be empty. Typographical error or missing code?\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationMonitor.java\",\"108\",\"48\",\"109\",\"13\"\n+\"Empty branch of conditional, or empty loop body\",\"An undocumented empty block or statement hinders readability. It may also indicate incomplete code.\",\"warning\",\"The body of a loop should not be empty. Typographical error or missing code?\",\"src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/monitor/FileAlterationObserver.java\",\"257\",\"48\",\"258\",\"13\"\n+\"TODO/FIXME comments\",\"A comment that contains 'TODO' or 'FIXME' may indicate code that is incomplete or broken, or it may highlight an ambiguity in the software's specification.\",\"recommendation\",\"TODO/FIXME comment.\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1124\",\"48\",\"1124\",\"62\"\n+\"TODO/FIXME comments\",\"A comment that contains 'TODO' or 'FIXME' may indicate code that is incomplete or broken, or it may highlight an ambiguity in the software's specification.\",\"recommendation\",\"TODO/FIXME comment.\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1138\",\"50\",\"1138\",\"64\"\n+\"TODO/FIXME comments\",\"A comment that contains 'TODO' or 'FIXME' may indicate code that is incomplete or broken, or it may highlight an ambiguity in the software's specification.\",\"recommendation\",\"TODO/FIXME comment.\",\"src/main/java/org/apache/commons/io/FileUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/FileUtils.java\",\"1139\",\"51\",\"1139\",\"65\"\n+\"TODO/FIXME comments\",\"A comment that contains 'TODO' or 'FIXME' may indicate code that is incomplete or broken, or it may highlight an ambiguity in the software's specification.\",\"recommendation\",\"TODO/FIXME comment.\",\"src/main/java/org/apache/commons/io/filefilter/MagicNumberFileFilter.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/filefilter/MagicNumberFileFilter.java\",\"264\",\"79\",\"264\",\"114\"\n+\"TODO/FIXME comments\",\"A comment that contains 'TODO' or 'FIXME' may indicate code that is incomplete or broken, or it may highlight an ambiguity in the software's specification.\",\"recommendation\",\"TODO/FIXME comment.\",\"src/main/java/org/apache/commons/io/output/TeeOutputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/output/TeeOutputStream.java\",\"32\",\"38\",\"32\",\"70\"\n+\"Commented-out code\",\"Commented-out code makes the remaining code more difficult to read.\",\"warning\",\"This comment appears to contain commented-out code.\",\"src/main/java/org/apache/commons/io/input/BOMInputStream.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/input/BOMInputStream.java\",\"290\",\"9\",\"293\",\"54\"\n+\"Confusing overloading of methods\",\"Overloaded methods that have the same number of parameters, where each pair of corresponding parameter types is convertible by casting or autoboxing, may be confusing.\",\"recommendation\",\"Method IOUtils.toInputStream(..) could be confused with overloaded method [[\"\"toInputStream\"\"|\"\"relative://src/main/java/org/apache/commons/io/IOUtils.java:1521:59539:13\"\"]], since dispatch depends on static types.\",\"src/main/java/org/apache/commons/io/IOUtils.java\",\"commons-io/revision-2016-November-08--14-46-36/src/main/java/org/apache/commons/io/IOUtils.java\",\"1472\",\"31\",\"1472\",\"43\"","path":"src/Sarif.FunctionalTests/ConverterTestData/Semmle/results.csv","position":71,"original_position":71,"commit_id":"b5bca4ed39d353f6d939b92f376ee8c3a7bcfd3d","original_commit_id":"b5bca4ed39d353f6d939b92f376ee8c3a7bcfd3d","user":{"login":"lgolding","id":11762653,"avatar_url":"https://avatars.githubusercontent.com/u/11762653?v=3","gravatar_id":"","url":"https://api.github.com/users/lgolding","html_url":"https://github.com/lgolding","followers_url":"https://api.github.com/users/lgolding/followers","following_url":"https://api.github.com/users/lgolding/following{/other_user}","gists_url":"https://api.github.com/users/lgolding/gists{/gist_id}","starred_url":"https://api.github.com/users/lgolding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgolding/subscriptions","organizations_url":"https://api.github.com/users/lgolding/orgs","repos_url":"https://api.github.com/users/lgolding/repos","events_url":"https://api.github.com/users/lgolding/events{/privacy}","received_events_url":"https://api.github.com/users/lgolding/received_events","type":"User","site_admin":false},"body":"What problem, and what convention? Are you talking about the colon-separated region components 1521:59539:13 in the bracketed link? Not sure what you think the converter should do here. If we do the work to extract these links (I filed a work item for that), then we would parse these out when we created the related location. Although really, to make that safe, they ought to specify a fragment: '.../commons/io/IOUtils.java#1521:59539:13'.\r\n\r\n---\r\nIn reply to: [90079504](https://github.com/Microsoft/sarif-sdk/pull/545#discussion_r90079504) [](ancestors = 90079504)","created_at":"2016-12-03T19:22:01Z","updated_at":"2016-12-03T19:22:01Z","html_url":"https://github.com/Microsoft/sarif-sdk/pull/545#discussion_r90763170","pull_request_url":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/comments/90763170"},"html":{"href":"https://github.com/Microsoft/sarif-sdk/pull/545#discussion_r90763170"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545","id":95376181,"html_url":"https://github.com/Microsoft/sarif-sdk/pull/545","diff_url":"https://github.com/Microsoft/sarif-sdk/pull/545.diff","patch_url":"https://github.com/Microsoft/sarif-sdk/pull/545.patch","issue_url":"https://api.github.com/repos/Microsoft/sarif-sdk/issues/545","number":545,"state":"open","locked":false,"title":"Semmle converter","user":{"login":"lgolding","id":11762653,"avatar_url":"https://avatars.githubusercontent.com/u/11762653?v=3","gravatar_id":"","url":"https://api.github.com/users/lgolding","html_url":"https://github.com/lgolding","followers_url":"https://api.github.com/users/lgolding/followers","following_url":"https://api.github.com/users/lgolding/following{/other_user}","gists_url":"https://api.github.com/users/lgolding/gists{/gist_id}","starred_url":"https://api.github.com/users/lgolding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgolding/subscriptions","organizations_url":"https://api.github.com/users/lgolding/orgs","repos_url":"https://api.github.com/users/lgolding/repos","events_url":"https://api.github.com/users/lgolding/events{/privacy}","received_events_url":"https://api.github.com/users/lgolding/received_events","type":"User","site_admin":false},"body":"This is a first cut at the Semme converter. It uses the `TextFieldParser` class from `Microsoft.VisualBasic.FileIO` to parse the CVS file. It emits `level`, `message`, `uri`, and `region` for each `result`. Note that Semmle defines a severity \"`recommended`\" which doesn't correspond to any member of our `ResultLevel` enumeration, so for now I've mapped it to `ResultLevel.Note`.\r\n\r\nSemmle doesn't have a \"rule id\". What we think of as rules, they implement as \"queries\", and queries have \"names\", but they don't have anything like our opaque rule id.","created_at":"2016-11-26T16:40:34Z","updated_at":"2016-12-03T19:22:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1c3ea67891e48ef7a7c8508b5c9929f573cf1de4","assignee":{"login":"michaelcfanning","id":13526455,"avatar_url":"https://avatars.githubusercontent.com/u/13526455?v=3","gravatar_id":"","url":"https://api.github.com/users/michaelcfanning","html_url":"https://github.com/michaelcfanning","followers_url":"https://api.github.com/users/michaelcfanning/followers","following_url":"https://api.github.com/users/michaelcfanning/following{/other_user}","gists_url":"https://api.github.com/users/michaelcfanning/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelcfanning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelcfanning/subscriptions","organizations_url":"https://api.github.com/users/michaelcfanning/orgs","repos_url":"https://api.github.com/users/michaelcfanning/repos","events_url":"https://api.github.com/users/michaelcfanning/events{/privacy}","received_events_url":"https://api.github.com/users/michaelcfanning/received_events","type":"User","site_admin":false},"assignees":[{"login":"michaelcfanning","id":13526455,"avatar_url":"https://avatars.githubusercontent.com/u/13526455?v=3","gravatar_id":"","url":"https://api.github.com/users/michaelcfanning","html_url":"https://github.com/michaelcfanning","followers_url":"https://api.github.com/users/michaelcfanning/followers","following_url":"https://api.github.com/users/michaelcfanning/following{/other_user}","gists_url":"https://api.github.com/users/michaelcfanning/gists{/gist_id}","starred_url":"https://api.github.com/users/michaelcfanning/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/michaelcfanning/subscriptions","organizations_url":"https://api.github.com/users/michaelcfanning/orgs","repos_url":"https://api.github.com/users/michaelcfanning/repos","events_url":"https://api.github.com/users/michaelcfanning/events{/privacy}","received_events_url":"https://api.github.com/users/michaelcfanning/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545/commits","review_comments_url":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545/comments","review_comment_url":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/sarif-sdk/issues/545/comments","statuses_url":"https://api.github.com/repos/Microsoft/sarif-sdk/statuses/b5bca4ed39d353f6d939b92f376ee8c3a7bcfd3d","head":{"label":"lgolding:semmle-converter","ref":"semmle-converter","sha":"b5bca4ed39d353f6d939b92f376ee8c3a7bcfd3d","user":{"login":"lgolding","id":11762653,"avatar_url":"https://avatars.githubusercontent.com/u/11762653?v=3","gravatar_id":"","url":"https://api.github.com/users/lgolding","html_url":"https://github.com/lgolding","followers_url":"https://api.github.com/users/lgolding/followers","following_url":"https://api.github.com/users/lgolding/following{/other_user}","gists_url":"https://api.github.com/users/lgolding/gists{/gist_id}","starred_url":"https://api.github.com/users/lgolding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgolding/subscriptions","organizations_url":"https://api.github.com/users/lgolding/orgs","repos_url":"https://api.github.com/users/lgolding/repos","events_url":"https://api.github.com/users/lgolding/events{/privacy}","received_events_url":"https://api.github.com/users/lgolding/received_events","type":"User","site_admin":false},"repo":{"id":54408927,"name":"sarif-sdk","full_name":"lgolding/sarif-sdk","owner":{"login":"lgolding","id":11762653,"avatar_url":"https://avatars.githubusercontent.com/u/11762653?v=3","gravatar_id":"","url":"https://api.github.com/users/lgolding","html_url":"https://github.com/lgolding","followers_url":"https://api.github.com/users/lgolding/followers","following_url":"https://api.github.com/users/lgolding/following{/other_user}","gists_url":"https://api.github.com/users/lgolding/gists{/gist_id}","starred_url":"https://api.github.com/users/lgolding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lgolding/subscriptions","organizations_url":"https://api.github.com/users/lgolding/orgs","repos_url":"https://api.github.com/users/lgolding/repos","events_url":"https://api.github.com/users/lgolding/events{/privacy}","received_events_url":"https://api.github.com/users/lgolding/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/lgolding/sarif-sdk","description":".NET code and supporting files for working with the 'Static Analysis Results Interchange Format' (SARIF, see https://github.com/sarif-standard/sarif-spec)","fork":true,"url":"https://api.github.com/repos/lgolding/sarif-sdk","forks_url":"https://api.github.com/repos/lgolding/sarif-sdk/forks","keys_url":"https://api.github.com/repos/lgolding/sarif-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/lgolding/sarif-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/lgolding/sarif-sdk/teams","hooks_url":"https://api.github.com/repos/lgolding/sarif-sdk/hooks","issue_events_url":"https://api.github.com/repos/lgolding/sarif-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/lgolding/sarif-sdk/events","assignees_url":"https://api.github.com/repos/lgolding/sarif-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/lgolding/sarif-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/lgolding/sarif-sdk/tags","blobs_url":"https://api.github.com/repos/lgolding/sarif-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/lgolding/sarif-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/lgolding/sarif-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/lgolding/sarif-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/lgolding/sarif-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/lgolding/sarif-sdk/languages","stargazers_url":"https://api.github.com/repos/lgolding/sarif-sdk/stargazers","contributors_url":"https://api.github.com/repos/lgolding/sarif-sdk/contributors","subscribers_url":"https://api.github.com/repos/lgolding/sarif-sdk/subscribers","subscription_url":"https://api.github.com/repos/lgolding/sarif-sdk/subscription","commits_url":"https://api.github.com/repos/lgolding/sarif-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/lgolding/sarif-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/lgolding/sarif-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/lgolding/sarif-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/lgolding/sarif-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/lgolding/sarif-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/lgolding/sarif-sdk/merges","archive_url":"https://api.github.com/repos/lgolding/sarif-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/lgolding/sarif-sdk/downloads","issues_url":"https://api.github.com/repos/lgolding/sarif-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/lgolding/sarif-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/lgolding/sarif-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/lgolding/sarif-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/lgolding/sarif-sdk/labels{/name}","releases_url":"https://api.github.com/repos/lgolding/sarif-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/lgolding/sarif-sdk/deployments","created_at":"2016-03-21T17:27:00Z","updated_at":"2016-03-21T17:27:04Z","pushed_at":"2016-11-26T16:44:53Z","git_url":"git://github.com/lgolding/sarif-sdk.git","ssh_url":"git@github.com:lgolding/sarif-sdk.git","clone_url":"https://github.com/lgolding/sarif-sdk.git","svn_url":"https://github.com/lgolding/sarif-sdk","homepage":"","size":59109,"stargazers_count":0,"watchers_count":0,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"408d117cc9a807578f88775209799a298ec7459d","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":45640472,"name":"sarif-sdk","full_name":"Microsoft/sarif-sdk","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/sarif-sdk","description":".NET code and supporting files for working with the 'Static Analysis Results Interchange Format' (SARIF, see https://github.com/sarif-standard/sarif-spec)","fork":false,"url":"https://api.github.com/repos/Microsoft/sarif-sdk","forks_url":"https://api.github.com/repos/Microsoft/sarif-sdk/forks","keys_url":"https://api.github.com/repos/Microsoft/sarif-sdk/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/sarif-sdk/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/sarif-sdk/teams","hooks_url":"https://api.github.com/repos/Microsoft/sarif-sdk/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/sarif-sdk/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/sarif-sdk/events","assignees_url":"https://api.github.com/repos/Microsoft/sarif-sdk/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/sarif-sdk/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/sarif-sdk/tags","blobs_url":"https://api.github.com/repos/Microsoft/sarif-sdk/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/sarif-sdk/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/sarif-sdk/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/sarif-sdk/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/sarif-sdk/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/sarif-sdk/languages","stargazers_url":"https://api.github.com/repos/Microsoft/sarif-sdk/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/sarif-sdk/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/sarif-sdk/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/sarif-sdk/subscription","commits_url":"https://api.github.com/repos/Microsoft/sarif-sdk/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/sarif-sdk/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/sarif-sdk/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/sarif-sdk/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/sarif-sdk/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/sarif-sdk/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/sarif-sdk/merges","archive_url":"https://api.github.com/repos/Microsoft/sarif-sdk/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/sarif-sdk/downloads","issues_url":"https://api.github.com/repos/Microsoft/sarif-sdk/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/sarif-sdk/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/sarif-sdk/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/sarif-sdk/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/sarif-sdk/releases{/id}","deployments_url":"https://api.github.com/repos/Microsoft/sarif-sdk/deployments","created_at":"2015-11-05T21:26:46Z","updated_at":"2016-11-02T19:24:45Z","pushed_at":"2016-11-26T16:44:53Z","git_url":"git://github.com/Microsoft/sarif-sdk.git","ssh_url":"git@github.com:Microsoft/sarif-sdk.git","clone_url":"https://github.com/Microsoft/sarif-sdk.git","svn_url":"https://github.com/Microsoft/sarif-sdk","homepage":"","size":59228,"stargazers_count":8,"watchers_count":8,"language":"C","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":13,"mirror_url":null,"open_issues_count":64,"forks":13,"open_issues":64,"watchers":8,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545"},"html":{"href":"https://github.com/Microsoft/sarif-sdk/pull/545"},"issue":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/issues/545"},"comments":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/issues/545/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/pulls/545/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/sarif-sdk/statuses/b5bca4ed39d353f6d939b92f376ee8c3a7bcfd3d"}}}}
{"actor":{"display_login":"lgolding"}}