{"action":"created","comment":{"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/comments/80704382","pull_request_review_id":1742543,"id":80704382,"diff_hunk":"@@ -0,0 +1,1835 @@\n+// Generated by the protocol buffer compiler.  DO NOT EDIT!\n+// source: AnalyzerReport.proto\n+#pragma warning disable 1591, 0612, 3021\n+#region Designer generated code\n+\n+using pb = global::Google.Protobuf;\n+using pbc = global::Google.Protobuf.Collections;\n+using pbr = global::Google.Protobuf.Reflection;\n+using scg = global::System.Collections.Generic;\n+namespace SonarAnalyzer.Protobuf {\n+\n+  /// <summary>Holder for reflection information generated from AnalyzerReport.proto</summary>\n+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n+  public static partial class AnalyzerReportReflection {\n+\n+    #region Descriptor\n+    /// <summary>File descriptor for AnalyzerReport.proto</summary>\n+    public static pbr::FileDescriptor Descriptor {\n+      get { return descriptor; }\n+    }\n+    private static pbr::FileDescriptor descriptor;\n+\n+    static AnalyzerReportReflection() {\n+      byte[] descriptorData = global::System.Convert.FromBase64String(\n+          string.Concat(\n+            \"ChRBbmFseXplclJlcG9ydC5wcm90bxINc29uYXJhbmFseXplciJbCglUZXh0\",\n+            \"UmFuZ2USEgoKc3RhcnRfbGluZRgBIAEoBRIQCghlbmRfbGluZRgCIAEoBRIU\",\n+            \"CgxzdGFydF9vZmZzZXQYAyABKAUSEgoKZW5kX29mZnNldBgEIAEoBSLHAQoN\",\n+            \"VG9rZW5UeXBlSW5mbxIRCglmaWxlX3BhdGgYASABKAkSOgoKdG9rZW5faW5m\",\n+            \"bxgCIAMoCzImLnNvbmFyYW5hbHl6ZXIuVG9rZW5UeXBlSW5mby5Ub2tlbklu\",\n+            \"Zm8aZwoJVG9rZW5JbmZvEiwKCnRva2VuX3R5cGUYASABKA4yGC5zb25hcmFu\",\n+            \"YWx5emVyLlRva2VuVHlwZRIsCgp0ZXh0X3JhbmdlGAIgASgLMhguc29uYXJh\",\n+            \"bmFseXplci5UZXh0UmFuZ2Ui3gEKE1N5bWJvbFJlZmVyZW5jZUluZm8SEQoJ\",\n+            \"ZmlsZV9wYXRoGAEgASgJEkUKCXJlZmVyZW5jZRgCIAMoCzIyLnNvbmFyYW5h\",\n+            \"bHl6ZXIuU3ltYm9sUmVmZXJlbmNlSW5mby5TeW1ib2xSZWZlcmVuY2UabQoP\",\n+            \"U3ltYm9sUmVmZXJlbmNlEi0KC2RlY2xhcmF0aW9uGAEgASgLMhguc29uYXJh\",\n+            \"bmFseXplci5UZXh0UmFuZ2USKwoJcmVmZXJlbmNlGAIgAygLMhguc29uYXJh\",\n+            \"bmFseXplci5UZXh0UmFuZ2UiuAEKEkNvcHlQYXN0ZVRva2VuSW5mbxIRCglm\",\n+            \"aWxlX3BhdGgYASABKAkSPwoKdG9rZW5faW5mbxgCIAMoCzIrLnNvbmFyYW5h\",\n+            \"bHl6ZXIuQ29weVBhc3RlVG9rZW5JbmZvLlRva2VuSW5mbxpOCglUb2tlbklu\",\n+            \"Zm8SEwoLdG9rZW5fdmFsdWUYASABKAkSLAoKdGV4dF9yYW5nZRgCIAEoCzIY\",\n+            \"LnNvbmFyYW5hbHl6ZXIuVGV4dFJhbmdlIqcDCgtNZXRyaWNzSW5mbxIRCglm\",\n+            \"aWxlX3BhdGgYASABKAkSEgoKbGluZV9jb3VudBgCIAEoBRITCgtjbGFzc19j\",\n+            \"b3VudBgDIAEoBRIXCg9zdGF0ZW1lbnRfY291bnQYBCABKAUSFgoOZnVuY3Rp\",\n+            \"b25fY291bnQYBSABKAUSGAoQcHVibGljX2FwaV9jb3VudBgGIAEoBRIlCh1w\",\n+            \"dWJsaWNfdW5kb2N1bWVudGVkX2FwaV9jb3VudBgHIAEoBRISCgpjb21wbGV4\",\n+            \"aXR5GAggASgFEh0KFWNvbXBsZXhpdHlfaW5fY2xhc3NlcxgJIAEoBRIfChdj\",\n+            \"b21wbGV4aXR5X2luX2Z1bmN0aW9ucxgKIAEoBRIkChxmaWxlX2NvbXBsZXhp\",\n+            \"dHlfZGlzdHJpYnV0aW9uGAsgASgJEigKIGZ1bmN0aW9uX2NvbXBsZXhpdHlf\",\n+            \"ZGlzdHJpYnV0aW9uGAwgASgJEhgKEG5vX3NvbmFyX2NvbW1lbnQYDSADKAUS\",\n+            \"GQoRbm9uX2JsYW5rX2NvbW1lbnQYDiADKAUSEQoJY29kZV9saW5lGA8gAygF\",\n+            \"IqEBCgpGaWxlSXNzdWVzEhEKCWZpbGVfcGF0aBgBIAEoCRIuCgVpc3N1ZRgC\",\n+            \"IAMoCzIfLnNvbmFyYW5hbHl6ZXIuRmlsZUlzc3Vlcy5Jc3N1ZRpQCgVJc3N1\",\n+            \"ZRIKCgJpZBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEioKCGxvY2F0aW9uGAMg\",\n+            \"ASgLMhguc29uYXJhbmFseXplci5UZXh0UmFuZ2UqagoJVG9rZW5UeXBlEgsK\",\n+            \"B1VOS05PV04QABINCglUWVBFX05BTUUQARITCg9OVU1FUklDX0xJVEVSQUwQ\",\n+            \"AhISCg5TVFJJTkdfTElURVJBTBADEgsKB0tFWVdPUkQQBBILCgdDT01NRU5U\",\n+            \"EAVCSwofb3JnLnNvbmFyc291cmNlLmRvdG5ldC5wcm90b2J1ZkINU29uYXJB\",\n+            \"bmFseXplckgBqgIWU29uYXJBbmFseXplci5Qcm90b2J1ZmIGcHJvdG8z\"));\n+      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,\n+          new pbr::FileDescriptor[] { },\n+          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::SonarAnalyzer.Protobuf.TokenType), }, new pbr::GeneratedClrTypeInfo[] {\n+            new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.TextRange), global::SonarAnalyzer.Protobuf.TextRange.Parser, new[]{ \"StartLine\", \"EndLine\", \"StartOffset\", \"EndOffset\" }, null, null, null),\n+            new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.TokenTypeInfo), global::SonarAnalyzer.Protobuf.TokenTypeInfo.Parser, new[]{ \"FilePath\", \"TokenInfo\" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.TokenTypeInfo.Types.TokenInfo), global::SonarAnalyzer.Protobuf.TokenTypeInfo.Types.TokenInfo.Parser, new[]{ \"TokenType\", \"TextRange\" }, null, null, null)}),\n+            new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.SymbolReferenceInfo), global::SonarAnalyzer.Protobuf.SymbolReferenceInfo.Parser, new[]{ \"FilePath\", \"Reference\" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.SymbolReferenceInfo.Types.SymbolReference), global::SonarAnalyzer.Protobuf.SymbolReferenceInfo.Types.SymbolReference.Parser, new[]{ \"Declaration\", \"Reference\" }, null, null, null)}),\n+            new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.CopyPasteTokenInfo), global::SonarAnalyzer.Protobuf.CopyPasteTokenInfo.Parser, new[]{ \"FilePath\", \"TokenInfo\" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.CopyPasteTokenInfo.Types.TokenInfo), global::SonarAnalyzer.Protobuf.CopyPasteTokenInfo.Types.TokenInfo.Parser, new[]{ \"TokenValue\", \"TextRange\" }, null, null, null)}),\n+            new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.MetricsInfo), global::SonarAnalyzer.Protobuf.MetricsInfo.Parser, new[]{ \"FilePath\", \"LineCount\", \"ClassCount\", \"StatementCount\", \"FunctionCount\", \"PublicApiCount\", \"PublicUndocumentedApiCount\", \"Complexity\", \"ComplexityInClasses\", \"ComplexityInFunctions\", \"FileComplexityDistribution\", \"FunctionComplexityDistribution\", \"NoSonarComment\", \"NonBlankComment\", \"CodeLine\" }, null, null, null),\n+            new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.FileIssues), global::SonarAnalyzer.Protobuf.FileIssues.Parser, new[]{ \"FilePath\", \"Issue\" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::SonarAnalyzer.Protobuf.FileIssues.Types.Issue), global::SonarAnalyzer.Protobuf.FileIssues.Types.Issue.Parser, new[]{ \"Id\", \"Message\", \"Location\" }, null, null, null)})\n+          }));\n+    }\n+    #endregion\n+\n+  }\n+  #region Enums\n+  public enum TokenType {\n+    [pbr::OriginalName(\"UNKNOWN\")] Unknown = 0,\n+    [pbr::OriginalName(\"TYPE_NAME\")] TypeName = 1,\n+    [pbr::OriginalName(\"NUMERIC_LITERAL\")] NumericLiteral = 2,\n+    [pbr::OriginalName(\"STRING_LITERAL\")] StringLiteral = 3,\n+    [pbr::OriginalName(\"KEYWORD\")] Keyword = 4,\n+    [pbr::OriginalName(\"COMMENT\")] Comment = 5,\n+  }\n+\n+  #endregion\n+\n+  #region Messages\n+  /// <summary>\n+  ///  Lines start at 1 and line offsets start at 0\n+  /// </summary>\n+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n+  public sealed partial class TextRange : pb::IMessage<TextRange> {\n+    private static readonly pb::MessageParser<TextRange> _parser = new pb::MessageParser<TextRange>(() => new TextRange());\n+    public static pb::MessageParser<TextRange> Parser { get { return _parser; } }\n+\n+    public static pbr::MessageDescriptor Descriptor {\n+      get { return global::SonarAnalyzer.Protobuf.AnalyzerReportReflection.Descriptor.MessageTypes[0]; }\n+    }\n+\n+    pbr::MessageDescriptor pb::IMessage.Descriptor {\n+      get { return Descriptor; }\n+    }\n+\n+    public TextRange() {\n+      OnConstruction();\n+    }\n+\n+    partial void OnConstruction();\n+\n+    public TextRange(TextRange other) : this() {\n+      startLine_ = other.startLine_;\n+      endLine_ = other.endLine_;\n+      startOffset_ = other.startOffset_;\n+      endOffset_ = other.endOffset_;\n+    }\n+\n+    public TextRange Clone() {\n+      return new TextRange(this);\n+    }\n+\n+    /// <summary>Field number for the \"start_line\" field.</summary>\n+    public const int StartLineFieldNumber = 1;\n+    private int startLine_;\n+    public int StartLine {\n+      get { return startLine_; }\n+      set {\n+        startLine_ = value;\n+      }\n+    }\n+\n+    /// <summary>Field number for the \"end_line\" field.</summary>\n+    public const int EndLineFieldNumber = 2;\n+    private int endLine_;\n+    /// <summary>\n+    ///  End line (inclusive)\n+    /// </summary>\n+    public int EndLine {\n+      get { return endLine_; }\n+      set {\n+        endLine_ = value;\n+      }\n+    }\n+\n+    /// <summary>Field number for the \"start_offset\" field.</summary>\n+    public const int StartOffsetFieldNumber = 3;\n+    private int startOffset_;\n+    public int StartOffset {\n+      get { return startOffset_; }\n+      set {\n+        startOffset_ = value;\n+      }\n+    }\n+\n+    /// <summary>Field number for the \"end_offset\" field.</summary>\n+    public const int EndOffsetFieldNumber = 4;\n+    private int endOffset_;\n+    public int EndOffset {\n+      get { return endOffset_; }\n+      set {\n+        endOffset_ = value;\n+      }\n+    }\n+\n+    public override bool Equals(object other) {\n+      return Equals(other as TextRange);\n+    }\n+\n+    public bool Equals(TextRange other) {\n+      if (ReferenceEquals(other, null)) {\n+        return false;\n+      }\n+      if (ReferenceEquals(other, this)) {\n+        return true;\n+      }\n+      if (StartLine != other.StartLine) return false;\n+      if (EndLine != other.EndLine) return false;\n+      if (StartOffset != other.StartOffset) return false;\n+      if (EndOffset != other.EndOffset) return false;\n+      return true;\n+    }\n+\n+    public override int GetHashCode() {\n+      int hash = 1;\n+      if (StartLine != 0) hash ^= StartLine.GetHashCode();\n+      if (EndLine != 0) hash ^= EndLine.GetHashCode();\n+      if (StartOffset != 0) hash ^= StartOffset.GetHashCode();\n+      if (EndOffset != 0) hash ^= EndOffset.GetHashCode();\n+      return hash;\n+    }\n+\n+    public override string ToString() {\n+      return pb::JsonFormatter.ToDiagnosticString(this);\n+    }\n+\n+    public void WriteTo(pb::CodedOutputStream output) {\n+      if (StartLine != 0) {\n+        output.WriteRawTag(8);\n+        output.WriteInt32(StartLine);\n+      }\n+      if (EndLine != 0) {\n+        output.WriteRawTag(16);\n+        output.WriteInt32(EndLine);\n+      }\n+      if (StartOffset != 0) {\n+        output.WriteRawTag(24);\n+        output.WriteInt32(StartOffset);\n+      }\n+      if (EndOffset != 0) {\n+        output.WriteRawTag(32);\n+        output.WriteInt32(EndOffset);\n+      }\n+    }\n+\n+    public int CalculateSize() {\n+      int size = 0;\n+      if (StartLine != 0) {\n+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StartLine);\n+      }\n+      if (EndLine != 0) {\n+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EndLine);\n+      }\n+      if (StartOffset != 0) {\n+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(StartOffset);\n+      }\n+      if (EndOffset != 0) {\n+        size += 1 + pb::CodedOutputStream.ComputeInt32Size(EndOffset);\n+      }\n+      return size;\n+    }\n+\n+    public void MergeFrom(TextRange other) {\n+      if (other == null) {\n+        return;\n+      }\n+      if (other.StartLine != 0) {\n+        StartLine = other.StartLine;\n+      }\n+      if (other.EndLine != 0) {\n+        EndLine = other.EndLine;\n+      }\n+      if (other.StartOffset != 0) {\n+        StartOffset = other.StartOffset;\n+      }\n+      if (other.EndOffset != 0) {\n+        EndOffset = other.EndOffset;\n+      }\n+    }\n+\n+    public void MergeFrom(pb::CodedInputStream input) {\n+      uint tag;\n+      while ((tag = input.ReadTag()) != 0) {\n+        switch(tag) {\n+          default:\n+            input.SkipLastField();\n+            break;\n+          case 8: {\n+            StartLine = input.ReadInt32();\n+            break;\n+          }\n+          case 16: {\n+            EndLine = input.ReadInt32();\n+            break;\n+          }\n+          case 24: {\n+            StartOffset = input.ReadInt32();\n+            break;\n+          }\n+          case 32: {\n+            EndOffset = input.ReadInt32();\n+            break;\n+          }\n+        }\n+      }\n+    }\n+\n+  }\n+\n+  /// <summary>\n+  ///  Used for code coloring\n+  /// </summary>\n+  [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n+  public sealed partial class TokenTypeInfo : pb::IMessage<TokenTypeInfo> {\n+    private static readonly pb::MessageParser<TokenTypeInfo> _parser = new pb::MessageParser<TokenTypeInfo>(() => new TokenTypeInfo());\n+    public static pb::MessageParser<TokenTypeInfo> Parser { get { return _parser; } }\n+\n+    public static pbr::MessageDescriptor Descriptor {\n+      get { return global::SonarAnalyzer.Protobuf.AnalyzerReportReflection.Descriptor.MessageTypes[1]; }\n+    }\n+\n+    pbr::MessageDescriptor pb::IMessage.Descriptor {\n+      get { return Descriptor; }\n+    }\n+\n+    public TokenTypeInfo() {\n+      OnConstruction();\n+    }\n+\n+    partial void OnConstruction();\n+\n+    public TokenTypeInfo(TokenTypeInfo other) : this() {\n+      filePath_ = other.filePath_;\n+      tokenInfo_ = other.tokenInfo_.Clone();\n+    }\n+\n+    public TokenTypeInfo Clone() {\n+      return new TokenTypeInfo(this);\n+    }\n+\n+    /// <summary>Field number for the \"file_path\" field.</summary>\n+    public const int FilePathFieldNumber = 1;\n+    private string filePath_ = \"\";\n+    public string FilePath {\n+      get { return filePath_; }\n+      set {\n+        filePath_ = pb::ProtoPreconditions.CheckNotNull(value, \"value\");\n+      }\n+    }\n+\n+    /// <summary>Field number for the \"token_info\" field.</summary>\n+    public const int TokenInfoFieldNumber = 2;\n+    private static readonly pb::FieldCodec<global::SonarAnalyzer.Protobuf.TokenTypeInfo.Types.TokenInfo> _repeated_tokenInfo_codec\n+        = pb::FieldCodec.ForMessage(18, global::SonarAnalyzer.Protobuf.TokenTypeInfo.Types.TokenInfo.Parser);\n+    private readonly pbc::RepeatedField<global::SonarAnalyzer.Protobuf.TokenTypeInfo.Types.TokenInfo> tokenInfo_ = new pbc::RepeatedField<global::SonarAnalyzer.Protobuf.TokenTypeInfo.Types.TokenInfo>();\n+    public pbc::RepeatedField<global::SonarAnalyzer.Protobuf.TokenTypeInfo.Types.TokenInfo> TokenInfo {\n+      get { return tokenInfo_; }\n+    }\n+\n+    public override bool Equals(object other) {\n+      return Equals(other as TokenTypeInfo);\n+    }\n+\n+    public bool Equals(TokenTypeInfo other) {\n+      if (ReferenceEquals(other, null)) {\n+        return false;\n+      }\n+      if (ReferenceEquals(other, this)) {\n+        return true;\n+      }\n+      if (FilePath != other.FilePath) return false;\n+      if(!tokenInfo_.Equals(other.tokenInfo_)) return false;\n+      return true;\n+    }\n+\n+    public override int GetHashCode() {\n+      int hash = 1;\n+      if (FilePath.Length != 0) hash ^= FilePath.GetHashCode();\n+      hash ^= tokenInfo_.GetHashCode();\n+      return hash;\n+    }\n+\n+    public override string ToString() {\n+      return pb::JsonFormatter.ToDiagnosticString(this);\n+    }\n+\n+    public void WriteTo(pb::CodedOutputStream output) {\n+      if (FilePath.Length != 0) {\n+        output.WriteRawTag(10);\n+        output.WriteString(FilePath);\n+      }\n+      tokenInfo_.WriteTo(output, _repeated_tokenInfo_codec);\n+    }\n+\n+    public int CalculateSize() {\n+      int size = 0;\n+      if (FilePath.Length != 0) {\n+        size += 1 + pb::CodedOutputStream.ComputeStringSize(FilePath);\n+      }\n+      size += tokenInfo_.CalculateSize(_repeated_tokenInfo_codec);\n+      return size;\n+    }\n+\n+    public void MergeFrom(TokenTypeInfo other) {\n+      if (other == null) {\n+        return;\n+      }\n+      if (other.FilePath.Length != 0) {\n+        FilePath = other.FilePath;\n+      }\n+      tokenInfo_.Add(other.tokenInfo_);\n+    }\n+\n+    public void MergeFrom(pb::CodedInputStream input) {\n+      uint tag;\n+      while ((tag = input.ReadTag()) != 0) {\n+        switch(tag) {\n+          default:\n+            input.SkipLastField();\n+            break;\n+          case 10: {\n+            FilePath = input.ReadString();\n+            break;\n+          }\n+          case 18: {\n+            tokenInfo_.AddEntriesFrom(input, _repeated_tokenInfo_codec);\n+            break;\n+          }\n+        }\n+      }\n+    }\n+\n+    #region Nested types\n+    /// <summary>Container for nested types declared in the TokenTypeInfo message type.</summary>\n+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n+    public static partial class Types {\n+      [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]\n+      public sealed partial class TokenInfo : pb::IMessage<TokenInfo> {\n+        private static readonly pb::MessageParser<TokenInfo> _parser = new pb::MessageParser<TokenInfo>(() => new TokenInfo());\n+        public static pb::MessageParser<TokenInfo> Parser { get { return _parser; } }\n+\n+        public static pbr::MessageDescriptor Descriptor {\n+          get { return global::SonarAnalyzer.Protobuf.TokenTypeInfo.Descriptor.NestedTypes[0]; }\n+        }\n+\n+        pbr::MessageDescriptor pb::IMessage.Descriptor {\n+          get { return Descriptor; }\n+        }\n+\n+        public TokenInfo() {\n+          OnConstruction();\n+        }\n+\n+        partial void OnConstruction();\n+\n+        public TokenInfo(TokenInfo other) : this() {\n+          tokenType_ = other.tokenType_;\n+          TextRange = other.textRange_ != null ? other.TextRange.Clone() : null;\n+        }\n+\n+        public TokenInfo Clone() {\n+          return new TokenInfo(this);\n+        }\n+\n+        /// <summary>Field number for the \"token_type\" field.</summary>\n+        public const int TokenTypeFieldNumber = 1;\n+        private global::SonarAnalyzer.Protobuf.TokenType tokenType_ = 0;\n+        public global::SonarAnalyzer.Protobuf.TokenType TokenType {\n+          get { return tokenType_; }\n+          set {\n+            tokenType_ = value;\n+          }\n+        }\n+\n+        /// <summary>Field number for the \"text_range\" field.</summary>\n+        public const int TextRangeFieldNumber = 2;\n+        private global::SonarAnalyzer.Protobuf.TextRange textRange_;\n+        public global::SonarAnalyzer.Protobuf.TextRange TextRange {\n+          get { return textRange_; }\n+          set {\n+            textRange_ = value;\n+          }\n+        }\n+\n+        public override bool Equals(object other) {\n+          return Equals(other as TokenInfo);\n+        }\n+\n+        public bool Equals(TokenInfo other) {\n+          if (ReferenceEquals(other, null)) {\n+            return false;\n+          }\n+          if (ReferenceEquals(other, this)) {\n+            return true;\n+          }\n+          if (TokenType != other.TokenType) return false;\n+          if (!object.Equals(TextRange, other.TextRange)) return false;\n+          return true;\n+        }\n+\n+        public override int GetHashCode() {\n+          int hash = 1;\n+          if (TokenType != 0) hash ^= TokenType.GetHashCode();\n+          if (textRange_ != null) hash ^= TextRange.GetHashCode();\n+          return hash;\n+        }\n+\n+        public override string ToString() {\n+          return pb::JsonFormatter.ToDiagnosticString(this);\n+        }\n+\n+        public void WriteTo(pb::CodedOutputStream output) {\n+          if (TokenType != 0) {\n+            output.WriteRawTag(8);\n+            output.WriteEnum((int) TokenType);\n+          }\n+          if (textRange_ != null) {\n+            output.WriteRawTag(18);\n+            output.WriteMessage(TextRange);\n+          }\n+        }\n+\n+        public int CalculateSize() {\n+          int size = 0;\n+          if (TokenType != 0) {\n+            size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TokenType);\n+          }\n+          if (textRange_ != null) {\n+            size += 1 + pb::CodedOutputStream.ComputeMessageSize(TextRange);\n+          }\n+          return size;\n+        }\n+\n+        public void MergeFrom(TokenInfo other) {\n+          if (other == null) {","path":"src/SonarAnalyzer.Scanner/Protobuf/AnalyzerReport.cs","position":502,"original_position":502,"commit_id":"77188db4fee1e6233b82d8f5f2c80129be3f9515","original_commit_id":"77188db4fee1e6233b82d8f5f2c80129be3f9515","user":{"login":"SonarTech","id":1842438,"avatar_url":"https://avatars.githubusercontent.com/u/1842438?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarTech","html_url":"https://github.com/SonarTech","followers_url":"https://api.github.com/users/SonarTech/followers","following_url":"https://api.github.com/users/SonarTech/following{/other_user}","gists_url":"https://api.github.com/users/SonarTech/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarTech/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarTech/subscriptions","organizations_url":"https://api.github.com/users/SonarTech/orgs","repos_url":"https://api.github.com/users/SonarTech/repos","events_url":"https://api.github.com/users/SonarTech/events{/privacy}","received_events_url":"https://api.github.com/users/SonarTech/received_events","type":"User","site_admin":false},"body":"![MAJOR](https://raw.githubusercontent.com/SonarCommunity/sonar-github/master/images/severity-major.png) In member 'TokenTypeInfo.Types.TokenInfo.MergeFrom(TokenTypeInfo.Types.TokenInfo)', change parameter name 'other' to 'message' in order to match the identifier as it has been declared in 'IMessage<TokenTypeInfo.Types.TokenInfo>.MergeFrom(TokenTypeInfo.Types.TokenInfo)'. [![rule](https://raw.githubusercontent.com/SonarCommunity/sonar-github/master/images/rule.png)](https://dory.sonarsource.com/sonarqube/coding_rules#rule_key=fxcop%3AParameterNamesShouldMatchBaseDeclaration)\n","created_at":"2016-09-27T14:25:10Z","updated_at":"2016-09-27T14:25:10Z","html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet/pull/1032#discussion_r80704382","pull_request_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032","_links":{"self":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/comments/80704382"},"html":{"href":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet/pull/1032#discussion_r80704382"},"pull_request":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032"}}},"pull_request":{"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032","id":86940405,"html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet/pull/1032","diff_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet/pull/1032.diff","patch_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet/pull/1032.patch","issue_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/1032","number":1032,"state":"open","locked":false,"title":"SLVS-1063 Change analysis-output.xml to a streamable protobuf file","user":{"login":"tvsonar","id":11485373,"avatar_url":"https://avatars.githubusercontent.com/u/11485373?v=3","gravatar_id":"","url":"https://api.github.com/users/tvsonar","html_url":"https://github.com/tvsonar","followers_url":"https://api.github.com/users/tvsonar/followers","following_url":"https://api.github.com/users/tvsonar/following{/other_user}","gists_url":"https://api.github.com/users/tvsonar/gists{/gist_id}","starred_url":"https://api.github.com/users/tvsonar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tvsonar/subscriptions","organizations_url":"https://api.github.com/users/tvsonar/orgs","repos_url":"https://api.github.com/users/tvsonar/repos","events_url":"https://api.github.com/users/tvsonar/events{/privacy}","received_events_url":"https://api.github.com/users/tvsonar/received_events","type":"User","site_admin":false},"body":"","created_at":"2016-09-27T14:24:05Z","updated_at":"2016-09-27T14:25:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b3f87ae68832c17045684f8eda4ce3719cf8cee8","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032/commits","review_comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032/comments","review_comment_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/1032/comments","statuses_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/statuses/77188db4fee1e6233b82d8f5f2c80129be3f9515","head":{"label":"SonarSource-VisualStudio:slvs-1063","ref":"slvs-1063","sha":"77188db4fee1e6233b82d8f5f2c80129be3f9515","user":{"login":"SonarSource-VisualStudio","id":16780579,"avatar_url":"https://avatars.githubusercontent.com/u/16780579?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarSource-VisualStudio","html_url":"https://github.com/SonarSource-VisualStudio","followers_url":"https://api.github.com/users/SonarSource-VisualStudio/followers","following_url":"https://api.github.com/users/SonarSource-VisualStudio/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource-VisualStudio/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource-VisualStudio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource-VisualStudio/subscriptions","organizations_url":"https://api.github.com/users/SonarSource-VisualStudio/orgs","repos_url":"https://api.github.com/users/SonarSource-VisualStudio/repos","events_url":"https://api.github.com/users/SonarSource-VisualStudio/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource-VisualStudio/received_events","type":"Organization","site_admin":false},"repo":{"id":33920958,"name":"sonaranalyzer-dotnet","full_name":"SonarSource-VisualStudio/sonaranalyzer-dotnet","owner":{"login":"SonarSource-VisualStudio","id":16780579,"avatar_url":"https://avatars.githubusercontent.com/u/16780579?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarSource-VisualStudio","html_url":"https://github.com/SonarSource-VisualStudio","followers_url":"https://api.github.com/users/SonarSource-VisualStudio/followers","following_url":"https://api.github.com/users/SonarSource-VisualStudio/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource-VisualStudio/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource-VisualStudio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource-VisualStudio/subscriptions","organizations_url":"https://api.github.com/users/SonarSource-VisualStudio/orgs","repos_url":"https://api.github.com/users/SonarSource-VisualStudio/repos","events_url":"https://api.github.com/users/SonarSource-VisualStudio/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource-VisualStudio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet","description":"Analyzers for C# used in both SonarLint for Visual Studio and the SonarQube C# Plugin","fork":false,"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet","forks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/forks","keys_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/teams","hooks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/hooks","issue_events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/events","assignees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/tags","blobs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/languages","stargazers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/stargazers","contributors_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/contributors","subscribers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/subscribers","subscription_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/subscription","commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/merges","archive_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/downloads","issues_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/deployments","created_at":"2015-04-14T08:51:34Z","updated_at":"2016-09-24T02:10:54Z","pushed_at":"2016-09-27T14:24:05Z","git_url":"git://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet.git","ssh_url":"git@github.com:SonarSource-VisualStudio/sonaranalyzer-dotnet.git","clone_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet.git","svn_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet","homepage":"","size":72613,"stargazers_count":102,"watchers_count":102,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":41,"mirror_url":null,"open_issues_count":3,"forks":41,"open_issues":3,"watchers":102,"default_branch":"master"}},"base":{"label":"SonarSource-VisualStudio:master","ref":"master","sha":"7440b3e4577a6a41bb70601dd74f46b262780a43","user":{"login":"SonarSource-VisualStudio","id":16780579,"avatar_url":"https://avatars.githubusercontent.com/u/16780579?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarSource-VisualStudio","html_url":"https://github.com/SonarSource-VisualStudio","followers_url":"https://api.github.com/users/SonarSource-VisualStudio/followers","following_url":"https://api.github.com/users/SonarSource-VisualStudio/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource-VisualStudio/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource-VisualStudio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource-VisualStudio/subscriptions","organizations_url":"https://api.github.com/users/SonarSource-VisualStudio/orgs","repos_url":"https://api.github.com/users/SonarSource-VisualStudio/repos","events_url":"https://api.github.com/users/SonarSource-VisualStudio/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource-VisualStudio/received_events","type":"Organization","site_admin":false},"repo":{"id":33920958,"name":"sonaranalyzer-dotnet","full_name":"SonarSource-VisualStudio/sonaranalyzer-dotnet","owner":{"login":"SonarSource-VisualStudio","id":16780579,"avatar_url":"https://avatars.githubusercontent.com/u/16780579?v=3","gravatar_id":"","url":"https://api.github.com/users/SonarSource-VisualStudio","html_url":"https://github.com/SonarSource-VisualStudio","followers_url":"https://api.github.com/users/SonarSource-VisualStudio/followers","following_url":"https://api.github.com/users/SonarSource-VisualStudio/following{/other_user}","gists_url":"https://api.github.com/users/SonarSource-VisualStudio/gists{/gist_id}","starred_url":"https://api.github.com/users/SonarSource-VisualStudio/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SonarSource-VisualStudio/subscriptions","organizations_url":"https://api.github.com/users/SonarSource-VisualStudio/orgs","repos_url":"https://api.github.com/users/SonarSource-VisualStudio/repos","events_url":"https://api.github.com/users/SonarSource-VisualStudio/events{/privacy}","received_events_url":"https://api.github.com/users/SonarSource-VisualStudio/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet","description":"Analyzers for C# used in both SonarLint for Visual Studio and the SonarQube C# Plugin","fork":false,"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet","forks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/forks","keys_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/teams","hooks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/hooks","issue_events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/events","assignees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/tags","blobs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/languages","stargazers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/stargazers","contributors_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/contributors","subscribers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/subscribers","subscription_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/subscription","commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/merges","archive_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/downloads","issues_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/deployments","created_at":"2015-04-14T08:51:34Z","updated_at":"2016-09-24T02:10:54Z","pushed_at":"2016-09-27T14:24:05Z","git_url":"git://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet.git","ssh_url":"git@github.com:SonarSource-VisualStudio/sonaranalyzer-dotnet.git","clone_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet.git","svn_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet","homepage":"","size":72613,"stargazers_count":102,"watchers_count":102,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":41,"mirror_url":null,"open_issues_count":3,"forks":41,"open_issues":3,"watchers":102,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032"},"html":{"href":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-dotnet/pull/1032"},"issue":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/1032"},"comments":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/issues/1032/comments"},"review_comments":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032/comments"},"review_comment":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/pulls/1032/commits"},"statuses":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-dotnet/statuses/77188db4fee1e6233b82d8f5f2c80129be3f9515"}}}}
{"actor":{"display_login":"SonarTech"}}