{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/3797","labels_url":"https://api.github.com/repos/dotnet/roslyn/issues/3797/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/roslyn/issues/3797/comments","events_url":"https://api.github.com/repos/dotnet/roslyn/issues/3797/events","html_url":"https://github.com/dotnet/roslyn/issues/3797","id":92497609,"number":3797,"title":"Add public support for third party Document and Project diagnostic sources","user":{"login":"mavasani","id":10605811,"avatar_url":"https://avatars.githubusercontent.com/u/10605811?v=3","gravatar_id":"","url":"https://api.github.com/users/mavasani","html_url":"https://github.com/mavasani","followers_url":"https://api.github.com/users/mavasani/followers","following_url":"https://api.github.com/users/mavasani/following{/other_user}","gists_url":"https://api.github.com/users/mavasani/gists{/gist_id}","starred_url":"https://api.github.com/users/mavasani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mavasani/subscriptions","organizations_url":"https://api.github.com/users/mavasani/orgs","repos_url":"https://api.github.com/users/mavasani/repos","events_url":"https://api.github.com/users/mavasani/events{/privacy}","received_events_url":"https://api.github.com/users/mavasani/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/dotnet/roslyn/labels/0%20-%20Backlog","name":"0 - Backlog","color":"CCCCCC"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Area-Analyzers","name":"Area-Analyzers","color":"5319e7"},{"url":"https://api.github.com/repos/dotnet/roslyn/labels/Feature%20Request","name":"Feature Request","color":"fc2929"}],"state":"open","locked":false,"assignee":{"login":"JohnHamby","id":10982715,"avatar_url":"https://avatars.githubusercontent.com/u/10982715?v=3","gravatar_id":"","url":"https://api.github.com/users/JohnHamby","html_url":"https://github.com/JohnHamby","followers_url":"https://api.github.com/users/JohnHamby/followers","following_url":"https://api.github.com/users/JohnHamby/following{/other_user}","gists_url":"https://api.github.com/users/JohnHamby/gists{/gist_id}","starred_url":"https://api.github.com/users/JohnHamby/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JohnHamby/subscriptions","organizations_url":"https://api.github.com/users/JohnHamby/orgs","repos_url":"https://api.github.com/users/JohnHamby/repos","events_url":"https://api.github.com/users/JohnHamby/events{/privacy}","received_events_url":"https://api.github.com/users/JohnHamby/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/dotnet/roslyn/milestones/4","html_url":"https://github.com/dotnet/roslyn/milestones/1.2","labels_url":"https://api.github.com/repos/dotnet/roslyn/milestones/4/labels","id":937402,"number":4,"title":"1.2","description":"This is our 1.2 Milestone.\r\n\r\n<!---\r\n@huboard:{\"order\":2.0}\r\n-->\r\n","creator":{"login":"jaredpar","id":146967,"avatar_url":"https://avatars.githubusercontent.com/u/146967?v=3","gravatar_id":"","url":"https://api.github.com/users/jaredpar","html_url":"https://github.com/jaredpar","followers_url":"https://api.github.com/users/jaredpar/followers","following_url":"https://api.github.com/users/jaredpar/following{/other_user}","gists_url":"https://api.github.com/users/jaredpar/gists{/gist_id}","starred_url":"https://api.github.com/users/jaredpar/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jaredpar/subscriptions","organizations_url":"https://api.github.com/users/jaredpar/orgs","repos_url":"https://api.github.com/users/jaredpar/repos","events_url":"https://api.github.com/users/jaredpar/events{/privacy}","received_events_url":"https://api.github.com/users/jaredpar/received_events","type":"User","site_admin":false},"open_issues":609,"closed_issues":34,"state":"open","created_at":"2015-01-15T20:48:55Z","updated_at":"2015-11-03T23:07:05Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2015-07-01T22:21:07Z","updated_at":"2015-11-03T23:26:20Z","closed_at":null,"body":"Currently, we have an internal [DocumentDiagnosticAnalyzer](http://source.roslyn.io/#q=DocumentDiagnosticAnalyzer) and [ProjectDiagnosticAnalyzer](http://source.roslyn.io/#q=ProjectDiagnosticAnalyzer) types that enable internal clients to report document and project specific diagnostics.\r\n\r\nThese are not **true** diagnostic analyzers, but just need a way to easily use all the pieces of our diagnostic/fix system. \r\n\r\nThe correct design is for `DocumentDiagnosticAnalyzer` and `ProjectDiagnosticAnalyzer` to use the [IIncrementalAnalyzer](http://source.roslyn.io/#Microsoft.CodeAnalysis.Features/SolutionCrawler/IIncrementalAnalyzer.cs,19d22ac10d0ea1f3,references) and [IDiagnosticUpdateSource](http://source.roslyn.io/#Microsoft.CodeAnalysis.Features/Diagnostics/IDiagnosticUpdateSource.cs,9165d9ee911b0b55,references) types and plug into the Solution crawler to report diagnostics.\r\n\r\nAdditionally, the analyze callbacks into these types should allow configuring whether or not they need to perform UI centric operations, so that they can be invoked from the VS UI thread.\r\n\r\nWe should eventually make these public so third party extensions can be written for such VS-specific diagnostic sources."},"comment":{"url":"https://api.github.com/repos/dotnet/roslyn/issues/comments/153522337","html_url":"https://github.com/dotnet/roslyn/issues/3797#issuecomment-153522337","issue_url":"https://api.github.com/repos/dotnet/roslyn/issues/3797","id":153522337,"user":{"login":"mavasani","id":10605811,"avatar_url":"https://avatars.githubusercontent.com/u/10605811?v=3","gravatar_id":"","url":"https://api.github.com/users/mavasani","html_url":"https://github.com/mavasani","followers_url":"https://api.github.com/users/mavasani/followers","following_url":"https://api.github.com/users/mavasani/following{/other_user}","gists_url":"https://api.github.com/users/mavasani/gists{/gist_id}","starred_url":"https://api.github.com/users/mavasani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mavasani/subscriptions","organizations_url":"https://api.github.com/users/mavasani/orgs","repos_url":"https://api.github.com/users/mavasani/repos","events_url":"https://api.github.com/users/mavasani/events{/privacy}","received_events_url":"https://api.github.com/users/mavasani/received_events","type":"User","site_admin":false},"created_at":"2015-11-03T23:26:20Z","updated_at":"2015-11-03T23:26:20Z","body":"@heejaechang PostSharp analyzer is a VSIX based analyzer, only for live analysis. They need some way to report diagnostics accessing VS Workspace services (such as options) - and because we don't have concept of VS-only analyzers that can access Workspace, it seems reasonable for them to implement their component as a 3rd party diagnostic source rather then an analyzer."}}