Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit ba83824

Browse files
committed
Fix VSSDK warnings.
Left intact warnings that are actually warning us that something is a bit iffy, and "Async" suffix warnings which we need to decide a policy on. We're also hitting microsoft/VSSDK-Analyzers#95 in a number of places.
1 parent 6234c8a commit ba83824

File tree

14 files changed

+69
-8
lines changed

14 files changed

+69
-8
lines changed

src/GitHub.InlineReviews/Commands/InlineCommentNavigationCommand.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
using GitHub.Models;
1010
using GitHub.Services;
1111
using GitHub.Services.Vssdk.Commands;
12+
using Microsoft;
1213
using Microsoft.VisualStudio;
1314
using Microsoft.VisualStudio.ComponentModelHost;
1415
using Microsoft.VisualStudio.Editor;
16+
using Microsoft.VisualStudio.Shell;
1517
using Microsoft.VisualStudio.Shell.Interop;
1618
using Microsoft.VisualStudio.Text;
1719
using Microsoft.VisualStudio.Text.Differencing;
@@ -99,6 +101,8 @@ protected int GetCursorPoint(ITextView textView, int lineNumber)
99101
/// </remarks>
100102
protected IEnumerable<ITextView> GetCurrentTextViews()
101103
{
104+
ThreadHelper.ThrowIfNotOnUIThread();
105+
102106
var result = new List<ITextView>();
103107

104108
try
@@ -164,6 +168,8 @@ protected IEnumerable<ITextView> GetCurrentTextViews()
164168
}
165169

166170
var model = (IComponentModel)serviceProvider.GetService(typeof(SComponentModel));
171+
Assumes.Present(model);
172+
167173
var adapterFactory = model.GetService<IVsEditorAdaptersFactoryService>();
168174
var wpfTextView = adapterFactory.GetWpfTextView(textView);
169175
result.Add(wpfTextView);

src/GitHub.InlineReviews/Commands/ToggleInlineCommentMarginCommand.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using Microsoft.VisualStudio.TextManager.Interop;
1010
using Microsoft.VisualStudio;
1111
using Microsoft.VisualStudio.Editor;
12+
using GitHub.Extensions;
1213

1314
namespace GitHub.InlineReviews.Commands
1415
{
@@ -42,7 +43,7 @@ public ToggleInlineCommentMarginCommand(
4243

4344
public override Task Execute()
4445
{
45-
usageTracker.Value.IncrementCounter(x => x.ExecuteToggleInlineCommentMarginCommand);
46+
usageTracker.Value.IncrementCounter(x => x.ExecuteToggleInlineCommentMarginCommand).Forget();
4647

4748
IVsTextView activeView = null;
4849
if (textManager.Value.GetActiveView(1, null, out activeView) == VSConstants.S_OK)

src/GitHub.InlineReviews/GitHub.InlineReviews.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,10 +289,10 @@
289289
<Version>0.2.1</Version>
290290
</PackageReference>
291291
<PackageReference Include="Microsoft.VisualStudio.SDK.Analyzers">
292-
<Version>15.8.33</Version>
292+
<Version>15.8.36</Version>
293293
</PackageReference>
294294
<PackageReference Include="Microsoft.VisualStudio.Threading.Analyzers">
295-
<Version>15.8.122</Version>
295+
<Version>15.8.192</Version>
296296
</PackageReference>
297297
<PackageReference Include="Microsoft.VSSDK.BuildTools">
298298
<Version>15.8.3252</Version>

src/GitHub.InlineReviews/InlineReviewsPackage.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Microsoft.VisualStudio.Threading;
1313
using Serilog;
1414
using Task = System.Threading.Tasks.Task;
15+
using Microsoft;
1516

1617
namespace GitHub.InlineReviews
1718
{
@@ -27,8 +28,9 @@ protected override async Task InitializeAsync(
2728
CancellationToken cancellationToken,
2829
IProgress<ServiceProgressData> progress)
2930
{
30-
var menuService = (IMenuCommandService)(await GetServiceAsync(typeof(IMenuCommandService)));
3131
var componentModel = (IComponentModel)(await GetServiceAsync(typeof(SComponentModel)));
32+
Assumes.Present(componentModel);
33+
3234
var exports = componentModel.DefaultExportProvider;
3335

3436
// Avoid delays when there is ongoing UI activity.
@@ -45,6 +47,8 @@ async Task InitializeMenus()
4547
}
4648

4749
var componentModel = (IComponentModel)(await GetServiceAsync(typeof(SComponentModel)));
50+
Assumes.Present(componentModel);
51+
4852
var exports = componentModel.DefaultExportProvider;
4953
var commands = new IVsCommandBase[]
5054
{
@@ -55,6 +59,8 @@ async Task InitializeMenus()
5559

5660
await JoinableTaskFactory.SwitchToMainThreadAsync();
5761
var menuService = (IMenuCommandService)(await GetServiceAsync(typeof(IMenuCommandService)));
62+
Assumes.Present(componentModel);
63+
5864
menuService.AddCommands(commands);
5965
}
6066
}

src/GitHub.InlineReviews/Services/PullRequestSessionService.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -770,7 +770,7 @@ int GetUpdatedLineNumber(IInlineCommentThreadModel thread, IEnumerable<DiffChunk
770770

771771
Task<IRepository> GetRepository(LocalRepositoryModel repository)
772772
{
773-
return Task.Factory.StartNew(() => gitService.GetRepository(repository.LocalPath));
773+
return Task.Run(() => gitService.GetRepository(repository.LocalPath));
774774
}
775775

776776
async Task<LastCommitAdapter> GetPullRequestLastCommitAdapter(HostAddress address, string owner, string name, int number)

src/GitHub.InlineReviews/ViewModels/InlineCommentPeekViewModel.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,10 +160,10 @@ public async Task Initialize()
160160
}
161161

162162
fileSubscription?.Dispose();
163-
fileSubscription = file.LinesChanged.ObserveOn(RxApp.MainThreadScheduler).Subscribe(LinesChanged);
163+
fileSubscription = file.LinesChanged.ObserveOn(RxApp.MainThreadScheduler).Subscribe(x => LinesChanged(x).Forget());
164164
}
165165

166-
async void LinesChanged(IReadOnlyList<Tuple<int, DiffSide>> lines)
166+
async Task LinesChanged(IReadOnlyList<Tuple<int, DiffSide>> lines)
167167
{
168168
try
169169
{

src/GitHub.VisualStudio/GitContextPackage.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using Microsoft.VisualStudio.Shell;
77
using Task = System.Threading.Tasks.Task;
88
using static Microsoft.VisualStudio.VSConstants;
9+
using Microsoft;
910

1011
namespace GitHub.VisualStudio
1112
{
@@ -28,6 +29,8 @@ protected async override Task InitializeAsync(CancellationToken cancellationToke
2829
}
2930

3031
var gitExt = (IVSGitExt)await GetServiceAsync(typeof(IVSGitExt));
32+
Assumes.Present(gitExt);
33+
3134
var context = UIContext.FromUIContextGuid(new Guid(Guids.UIContext_Git));
3235
RefreshContext(context, gitExt);
3336
gitExt.ActiveRepositoriesChanged += () =>

src/GitHub.VisualStudio/GitHubPackage.cs

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
using Microsoft.VisualStudio.Shell.Interop;
2525
using Serilog;
2626
using Task = System.Threading.Tasks.Task;
27+
using Microsoft;
2728

2829
namespace GitHub.VisualStudio
2930
{
@@ -80,6 +81,8 @@ async Task InitializeMenus()
8081
if (ExportForVisualStudioProcessAttribute.IsVisualStudioProcess())
8182
{
8283
var componentModel = (IComponentModel)(await GetServiceAsync(typeof(SComponentModel)));
84+
Assumes.Present(componentModel);
85+
8386
var exports = componentModel.DefaultExportProvider;
8487
commands = new IVsCommandBase[]
8588
{
@@ -111,11 +114,15 @@ async Task InitializeMenus()
111114

112115
await JoinableTaskFactory.SwitchToMainThreadAsync();
113116
var menuService = (IMenuCommandService)(await GetServiceAsync(typeof(IMenuCommandService)));
117+
Assumes.Present(menuService);
118+
114119
menuService.AddCommands(commands);
115120
}
116121

117122
async Task EnsurePackageLoaded(Guid packageGuid)
118123
{
124+
await JoinableTaskFactory.SwitchToMainThreadAsync(DisposalToken);
125+
119126
var shell = await GetServiceAsync(typeof(SVsShell)) as IVsShell;
120127
if (shell != null)
121128
{
@@ -233,6 +240,8 @@ async Task CheckBindingPathsAsync()
233240

234241
public async Task<IGitHubPaneViewModel> ShowGitHubPane()
235242
{
243+
await JoinableTaskFactory.SwitchToMainThreadAsync(DisposalToken);
244+
236245
var pane = ShowToolWindow(new Guid(GitHubPane.GitHubPaneGuid));
237246
if (pane == null)
238247
return null;
@@ -248,6 +257,8 @@ public async Task<IGitHubPaneViewModel> ShowGitHubPane()
248257

249258
static ToolWindowPane ShowToolWindow(Guid windowGuid)
250259
{
260+
ThreadHelper.ThrowIfNotOnUIThread();
261+
251262
IVsWindowFrame frame;
252263
if (ErrorHandler.Failed(Services.UIShell.FindToolWindow((uint)__VSCREATETOOLWIN.CTW_fForceCreate,
253264
ref windowGuid, out frame)))
@@ -290,6 +301,8 @@ async Task<object> CreateService(IAsyncServiceContainer container, CancellationT
290301
// These services are got through MEF and we will take a performance hit if ILoginManager is requested during
291302
// InitializeAsync. TODO: We can probably make LoginManager a normal MEF component rather than a service.
292303
var serviceProvider = await GetServiceAsync(typeof(IGitHubServiceProvider)) as IGitHubServiceProvider;
304+
Assumes.Present(serviceProvider);
305+
293306
var keychain = serviceProvider.GetService<IKeychain>();
294307
var oauthListener = serviceProvider.GetService<IOAuthCallbackListener>();
295308

@@ -319,6 +332,8 @@ async Task<object> CreateService(IAsyncServiceContainer container, CancellationT
319332
else if (serviceType == typeof(IUsageService))
320333
{
321334
var sp = await GetServiceAsync(typeof(IGitHubServiceProvider)) as IGitHubServiceProvider;
335+
Assumes.Present(sp);
336+
322337
var environment = new Rothko.Environment();
323338
return new UsageService(sp, environment);
324339
}
@@ -327,6 +342,11 @@ async Task<object> CreateService(IAsyncServiceContainer container, CancellationT
327342
var usageService = await GetServiceAsync(typeof(IUsageService)) as IUsageService;
328343
var serviceProvider = await GetServiceAsync(typeof(IGitHubServiceProvider)) as IGitHubServiceProvider;
329344
var settings = await GetServiceAsync(typeof(IPackageSettings)) as IPackageSettings;
345+
346+
Assumes.Present(usageService);
347+
Assumes.Present(serviceProvider);
348+
Assumes.Present(settings);
349+
330350
return new UsageTracker(serviceProvider, usageService, settings);
331351
}
332352
else if (serviceType == typeof(IVSGitExt))
@@ -352,6 +372,8 @@ async Task<object> CreateService(IAsyncServiceContainer container, CancellationT
352372
else
353373
{
354374
var sp = await GetServiceAsync(typeof(IGitHubServiceProvider)) as IGitHubServiceProvider;
375+
Assumes.Present(sp);
376+
355377
return sp.TryGetService(serviceType);
356378
}
357379
}

src/GitHub.VisualStudio/Helpers/ActiveDocumentSnapshot.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ public class ActiveDocumentSnapshot : IActiveDocumentSnapshot
1818
[ImportingConstructor]
1919
public ActiveDocumentSnapshot([Import(typeof(SVsServiceProvider))] IServiceProvider serviceProvider)
2020
{
21+
ThreadHelper.ThrowIfNotOnUIThread();
22+
2123
StartLine = EndLine = -1;
2224
var document = Services.Dte2?.ActiveDocument;
2325
Name = document.FullName.Equals(document.ProjectItem.FileNames[1], StringComparison.OrdinalIgnoreCase) ? document.ProjectItem.FileNames[1] : document.FullName;

src/GitHub.VisualStudio/Helpers/Browser.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,12 @@ public void OpenUrl(Uri uri)
4141
{
4242
__VSCREATEWEBBROWSER createFlags = __VSCREATEWEBBROWSER.VSCWB_AutoShow;
4343
VSPREVIEWRESOLUTION resolution = VSPREVIEWRESOLUTION.PR_Default;
44-
int result = ErrorHandler.CallWithCOMConvention(() => service.CreateExternalWebBrowser((uint)createFlags, resolution, uri.AbsoluteUri));
44+
int result = ErrorHandler.CallWithCOMConvention(() =>
45+
{
46+
ThreadHelper.ThrowIfNotOnUIThread();
47+
service.CreateExternalWebBrowser((uint)createFlags, resolution, uri.AbsoluteUri);
48+
});
49+
4550
if (ErrorHandler.Succeeded(result))
4651
return;
4752
}

0 commit comments

Comments
 (0)