{"action":"created","comment":{"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments/65841766","id":65841766,"diff_hunk":"@@ -0,0 +1,443 @@\n+﻿/*\n+ * SonarLint for Visual Studio\n+ * Copyright (C) 2015-2016 SonarSource SA\n+ * mailto:contact@sonarsource.com\n+ *\n+ * This program is free software; you can redistribute it and/or\n+ * modify it under the terms of the GNU Lesser General Public\n+ * License as published by the Free Software Foundation; either\n+ * version 3 of the License, or (at your option) any later version.\n+ *\n+ * This program is distributed in the hope that it will be useful,\n+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\n+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n+ * Lesser General Public License for more details.\n+ *\n+ * You should have received a copy of the GNU Lesser General Public\n+ * License along with this program; if not, write to the Free Software\n+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02\n+ */\n+\n+using System.Collections.Immutable;\n+using System.Linq;\n+using Microsoft.CodeAnalysis;\n+using Microsoft.CodeAnalysis.CSharp;\n+using Microsoft.CodeAnalysis.CSharp.Syntax;\n+using Microsoft.CodeAnalysis.Diagnostics;\n+using SonarLint.Common;\n+using SonarLint.Common.Sqale;\n+using SonarLint.Helpers;\n+using System;\n+using System.Collections.Generic;\n+using SonarLint.Helpers.Cfg.CSharp;\n+using SonarLint.Helpers.Cfg.Common;\n+using SonarLint.Helpers.Cfg;\n+\n+namespace SonarLint.Rules.CSharp\n+{\n+    using SymbolWithInitializer = KeyValuePair<ISymbol, EqualsValueClauseSyntax>;\n+    using CtorDeclarationTuple = SyntaxNodeSymbolSemanticModelTuple<ConstructorDeclarationSyntax, IMethodSymbol>;\n+\n+    [DiagnosticAnalyzer(LanguageNames.CSharp)]\n+    [SqaleConstantRemediation(\"1min\")]\n+    [SqaleSubCharacteristic(SqaleSubCharacteristic.Understandability)]\n+    [Rule(DiagnosticId, Severity.Minor, Title, false)]\n+    [Tags(Tag.Finding)]\n+    public class MemberInitializerRedundant : SonarDiagnosticAnalyzer\n+    {\n+        internal const string DiagnosticId = \"S3604\";\n+        internal const string Title = \"Member initializer values should not be redundant\";\n+        internal const string Description =\n+            \"Fields, properties and events can be initialized either inline or in the constructor. Initializing them inline and in the constructor at the \" +\n+            \"same time is redundant; the inline initialization will be overridden.\";\n+        internal const string MessageFormat = \"Remove the member initializer, all constructors set an initial value for the member.\";\n+        internal const string Category = SonarLint.Common.Category.Maintainability;\n+\n+        internal static readonly DiagnosticDescriptor Rule =\n+            new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category,\n+                DiagnosticSeverity.Info, true,\n+                helpLinkUri: DiagnosticId.GetHelpLink(),\n+                description: Description,\n+                customTags: IdeVisibility.Hidden.ToCustomTags());\n+\n+        public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get { return ImmutableArray.Create(Rule); } }\n+\n+        protected override void Initialize(SonarAnalysisContext context)\n+        {\n+            context.RegisterSyntaxNodeActionInNonGenerated(\n+                c =>\n+                {\n+                    var declaration = (TypeDeclarationSyntax)c.Node;\n+                    var symbol = c.SemanticModel.GetDeclaredSymbol(declaration);\n+\n+                    var constructorSymbols = symbol?.GetMembers()\n+                        .OfType<IMethodSymbol>()\n+                        .Where(IsExplicitlyDefinedConstructor)\n+                        .ToList();\n+\n+                    if (constructorSymbols == null ||\n+                        !constructorSymbols.Any())\n+                    {\n+                        return;\n+                    }\n+\n+                    var ctorDeclarations = GetConstructorTuples(c, constructorSymbols);\n+\n+                    var candidateFields = GetInitializedFieldLikeDeclarations<FieldDeclarationSyntax, IFieldSymbol>(declaration, c.SemanticModel, f => f.Type);\n+                    var candidateEvents = GetInitializedFieldLikeDeclarations<EventFieldDeclarationSyntax, IEventSymbol>(declaration, c.SemanticModel, f => f.Type);\n+                    var candidateProperties = GetInitializedPropertyDeclarations(declaration, c.SemanticModel);\n+\n+                    var symbolInitializerPairs = candidateFields.Select(t => new SymbolWithInitializer(t.Symbol, t.Initializer))\n+                        .Concat(candidateEvents.Select(t => new SymbolWithInitializer(t.Symbol, t.Initializer)))\n+                        .Concat(candidateProperties.Select(t => new SymbolWithInitializer(t.Symbol, t.Initializer)))\n+                        .ToDictionary(t => t.Key, t => t.Value);\n+\n+                    if (!symbolInitializerPairs.Any())\n+                    {\n+                        return;\n+                    }\n+\n+                    foreach (var declaredSymbol in symbolInitializerPairs.Keys)\n+                    {\n+                        var setInAllCtors = ctorDeclarations\n+                            .All(ctor => IsSymbolFirstSetInCtor(declaredSymbol, ctor));\n+\n+                        if (setInAllCtors)\n+                        {\n+                            c.ReportDiagnostic(Diagnostic.Create(Rule, symbolInitializerPairs[declaredSymbol].GetLocation()));\n+                        }\n+                    }\n+                },\n+                SyntaxKind.ClassDeclaration,\n+                SyntaxKind.StructDeclaration);\n+        }\n+\n+        private static List<CtorDeclarationTuple> GetConstructorTuples(\n+            SyntaxNodeAnalysisContext context, List<IMethodSymbol> constructorSymbols)\n+        {\n+            return constructorSymbols\n+                .Select(ctor => new SyntaxNodeSymbolSemanticModelTuple<ConstructorDeclarationSyntax, IMethodSymbol>\n+                {\n+                    SyntaxNode = ctor.DeclaringSyntaxReferences.FirstOrDefault()?.GetSyntax() as ConstructorDeclarationSyntax,\n+                    Symbol = ctor\n+                })\n+                .Where(ctor => ctor.SyntaxNode != null)","path":"src/SonarLint.CSharp/Rules/MemberInitializerRedundant.cs","position":124,"original_position":124,"commit_id":"f71134a87d6e9d424c57a7fbb9e9d6dcbc6a15d8","original_commit_id":"f71134a87d6e9d424c57a7fbb9e9d6dcbc6a15d8","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":"Good point. Probably I don't have to, but it's just safer to do so. I'm not 100% confident to remove this check.","created_at":"2016-06-06T06:34:03Z","updated_at":"2016-06-06T06:34:03Z","html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/873#discussion_r65841766","pull_request_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873","_links":{"self":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments/65841766"},"html":{"href":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/873#discussion_r65841766"},"pull_request":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873"}}},"pull_request":{"url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873","id":67873266,"html_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/873","diff_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/873.diff","patch_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/873.patch","issue_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/873","number":873,"state":"open","locked":false,"title":"SLVS-865 S3604 - Member initializer values should not be redundant","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-04-26T12:05:34Z","updated_at":"2016-06-06T06:34:03Z","closed_at":null,"merged_at":null,"merge_commit_sha":"0fe30a3d45feea0258ea8263a9e49f86903ad3b3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873/commits","review_comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873/comments","review_comment_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments{/number}","comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/873/comments","statuses_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/statuses/f71134a87d6e9d424c57a7fbb9e9d6dcbc6a15d8","head":{"label":"tvsonar:issue-865","ref":"issue-865","sha":"f71134a87d6e9d424c57a7fbb9e9d6dcbc6a15d8","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},"repo":{"id":35810200,"name":"sonarlint-roslyn-analyzer","full_name":"tvsonar/sonarlint-roslyn-analyzer","owner":{"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},"private":false,"html_url":"https://github.com/tvsonar/sonarlint-roslyn-analyzer","description":"","fork":true,"url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer","forks_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/forks","keys_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/teams","hooks_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/hooks","issue_events_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/issues/events{/number}","events_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/events","assignees_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/assignees{/user}","branches_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/branches{/branch}","tags_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/tags","blobs_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/refs{/sha}","trees_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/statuses/{sha}","languages_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/languages","stargazers_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/stargazers","contributors_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/contributors","subscribers_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/subscribers","subscription_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/subscription","commits_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/commits{/sha}","git_commits_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/git/commits{/sha}","comments_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/comments{/number}","issue_comment_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/issues/comments{/number}","contents_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/contents/{+path}","compare_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/merges","archive_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/downloads","issues_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/issues{/number}","pulls_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/pulls{/number}","milestones_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/milestones{/number}","notifications_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/labels{/name}","releases_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/releases{/id}","deployments_url":"https://api.github.com/repos/tvsonar/sonarlint-roslyn-analyzer/deployments","created_at":"2015-05-18T09:55:28Z","updated_at":"2016-02-04T12:57:11Z","pushed_at":"2016-06-03T12:54:46Z","git_url":"git://github.com/tvsonar/sonarlint-roslyn-analyzer.git","ssh_url":"git@github.com:tvsonar/sonarlint-roslyn-analyzer.git","clone_url":"https://github.com/tvsonar/sonarlint-roslyn-analyzer.git","svn_url":"https://github.com/tvsonar/sonarlint-roslyn-analyzer","homepage":null,"size":66803,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"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":"SonarSource-VisualStudio:master","ref":"master","sha":"d0d9353ccd7d8b4b20d53ef936ff6f91607187a7","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-csharp","full_name":"SonarSource-VisualStudio/sonaranalyzer-csharp","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-csharp","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-csharp","forks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/forks","keys_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/keys{/key_id}","collaborators_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/teams","hooks_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/hooks","issue_events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/events{/number}","events_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/events","assignees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/assignees{/user}","branches_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/branches{/branch}","tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/tags","blobs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/refs{/sha}","trees_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/trees{/sha}","statuses_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/statuses/{sha}","languages_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/languages","stargazers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/stargazers","contributors_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/contributors","subscribers_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/subscribers","subscription_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/subscription","commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/commits{/sha}","git_commits_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/git/commits{/sha}","comments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/comments{/number}","issue_comment_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/comments{/number}","contents_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/contents/{+path}","compare_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/compare/{base}...{head}","merges_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/merges","archive_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/downloads","issues_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues{/number}","pulls_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls{/number}","milestones_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/milestones{/number}","notifications_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/labels{/name}","releases_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/releases{/id}","deployments_url":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/deployments","created_at":"2015-04-14T08:51:34Z","updated_at":"2016-05-28T15:51:23Z","pushed_at":"2016-06-03T12:54:52Z","git_url":"git://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp.git","ssh_url":"git@github.com:SonarSource-VisualStudio/sonaranalyzer-csharp.git","clone_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp.git","svn_url":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp","homepage":"","size":69289,"stargazers_count":82,"watchers_count":82,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":32,"mirror_url":null,"open_issues_count":3,"forks":32,"open_issues":3,"watchers":82,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873"},"html":{"href":"https://github.com/SonarSource-VisualStudio/sonaranalyzer-csharp/pull/873"},"issue":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/873"},"comments":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/issues/873/comments"},"review_comments":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873/comments"},"review_comment":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/pulls/873/commits"},"statuses":{"href":"https://api.github.com/repos/SonarSource-VisualStudio/sonaranalyzer-csharp/statuses/f71134a87d6e9d424c57a7fbb9e9d6dcbc6a15d8"}}}}
{"actor":{"display_login":"tvsonar"}}