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

Commit a6e2ea2

Browse files
StanleyGoldmanalpaix
authored andcommitted
Adding Visual Studio Telemetry
1 parent ce9e5c4 commit a6e2ea2

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

src/GitHub.VisualStudio/GitHub.VisualStudio.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,9 @@
296296
</ItemGroup>
297297
<ItemGroup>
298298
<PackageReference Include="Madskristensen.VisualStudio.SDK" Version="14.3.75-pre" />
299+
<PackageReference Include="Microsoft.VisualStudio.Telemetry">
300+
<Version>16.0.233</Version>
301+
</PackageReference>
299302
<PackageReference Include="Microsoft.VSSDK.BuildTools">
300303
<Version>15.8.3252</Version>
301304
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>

src/GitHub.VisualStudio/Services/UsageTracker.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
using GitHub.Logging;
88
using GitHub.Models;
99
using GitHub.Settings;
10+
using Microsoft.VisualStudio.Telemetry;
11+
using Microsoft.VisualStudio.Text.Editor;
1012
using Microsoft.VisualStudio.Threading;
1113
using Serilog;
1214
using Task = System.Threading.Tasks.Task;
@@ -15,6 +17,12 @@ namespace GitHub.Services
1517
{
1618
public sealed class UsageTracker : IUsageTracker, IDisposable
1719
{
20+
private const int TelemetryVersion = 1; // Please update the version every time you want to indicate a change in telemetry logic when the extension itself is updated
21+
private const string TelemetryVersionProperty = "TelemetryVersion";
22+
23+
private const string EventNameBase = "vs/github/extension/";
24+
private const string PropertyBase = "vs.github.extension.";
25+
1826
static readonly ILogger log = LogManager.ForContext<UsageTracker>();
1927
readonly IGitHubServiceProvider gitHubServiceProvider;
2028

@@ -52,10 +60,21 @@ public async Task IncrementCounter(Expression<Func<UsageModel.MeasuresModel, int
5260
var usage = await GetCurrentReport(data);
5361
var property = (MemberExpression)counter.Body;
5462
var propertyInfo = (PropertyInfo)property.Member;
55-
log.Verbose("Increment counter {Name}", propertyInfo.Name);
63+
var eventName = propertyInfo.Name;
64+
log.Verbose("Increment counter {Name}", eventName);
5665
var value = (int)propertyInfo.GetValue(usage.Measures);
5766
propertyInfo.SetValue(usage.Measures, value + 1);
5867
await service.WriteLocalData(data);
68+
69+
const string numberOfPrefix = "numberof";
70+
if (eventName.IndexOf(numberOfPrefix, StringComparison.InvariantCultureIgnoreCase) != -1)
71+
{
72+
eventName = eventName.Substring(numberOfPrefix.Length);
73+
}
74+
75+
var operation = new OperationEvent(EventNameBase + eventName, TelemetryResult.Success);
76+
operation.Properties[PropertyBase + TelemetryVersionProperty] = TelemetryVersion;
77+
TelemetryService.DefaultSession.PostEvent(operation);
5978
}
6079

6180
IDisposable StartTimer()

0 commit comments

Comments
 (0)