Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/OmniSharp.Abstractions/IOmniSharpEnvironment.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ public interface IOmniSharpEnvironment
string SolutionFilePath { get; }
string SharedDirectory { get; }
string[] AdditionalArguments { get; }
bool WantTelemetryInfo { get; }
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: I know names are hard and this isn't a blocker but maybe IncludeTelemetryInfo instead

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm happy to make that change. What about the flag names? --include-telemetry-info and -it ?

}
}
4 changes: 4 additions & 0 deletions src/OmniSharp.Host/CommandLineApplication.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public class CommandLineApplication
private readonly CommandOption _logLevel;
private readonly CommandOption _applicationRoot;
private readonly CommandOption _debug;
private readonly CommandOption _wantTelemetryInfo;

public CommandLineApplication()
{
Expand All @@ -34,6 +35,7 @@ public CommandLineApplication()
_zeroBasedIndices = Application.Option("-z | --zero-based-indices", "Use zero based indices in request/responses (defaults to 'false').", CommandOptionType.NoValue);
_plugin = Application.Option("-pl | --plugin", "Plugin name(s).", CommandOptionType.MultipleValue);
_debug = Application.Option("-d | --debug", "Wait for debugger to attach", CommandOptionType.NoValue);
_wantTelemetryInfo = Application.Option("-wt | --want-telemetry-info", "Gather extra telemetry information", CommandOptionType.NoValue);
}

public int Execute(string[] args)
Expand Down Expand Up @@ -105,5 +107,7 @@ private void DebugAttach()
}
}
}

public bool WantTelemetryInfo => _wantTelemetryInfo.HasValue();
}
}
3 changes: 2 additions & 1 deletion src/OmniSharp.Host/CommandLineApplicationExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public static OmniSharpEnvironment CreateEnvironment(this CommandLineApplication
application.ApplicationRoot,
application.HostPid,
application.LogLevel,
application.OtherArgs.ToArray<string>());
application.OtherArgs.ToArray<string>(),
application.WantTelemetryInfo);
}

public static PluginAssemblies CreatePluginAssemblies(this CommandLineApplication application,
Expand Down
5 changes: 4 additions & 1 deletion src/OmniSharp.Host/Services/OmniSharpEnvironment.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,14 @@ public class OmniSharpEnvironment : IOmniSharpEnvironment
public int HostProcessId { get; }
public LogLevel LogLevel { get; }
public string[] AdditionalArguments { get; }
public bool WantTelemetryInfo { get; }

public OmniSharpEnvironment(
string path = null,
int hostPid = -1,
LogLevel logLevel = LogLevel.None,
string[] additionalArguments = null)
string[] additionalArguments = null,
bool wantTelemetryInfo = false)
{
if (string.IsNullOrEmpty(path))
{
Expand All @@ -40,6 +42,7 @@ public OmniSharpEnvironment(

HostProcessId = hostPid;
LogLevel = logLevel;
WantTelemetryInfo = wantTelemetryInfo;
AdditionalArguments = additionalArguments;

// First look at OMNISHARPHOME to allow users to set custom location, then
Expand Down
4 changes: 2 additions & 2 deletions src/OmniSharp.MSBuild/ProjectFile/ProjectFileInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ internal static ProjectFileInfo CreateNoBuild(string filePath, ProjectLoader loa
var id = ProjectId.CreateNewId(debugName: filePath);
var project = loader.EvaluateProjectFile(filePath);

var dotNetInfo = dotNetCli.GetInfo(Path.GetDirectoryName(project.FullPath));
var dotNetInfo = dotNetCli?.GetInfo(Path.GetDirectoryName(project.FullPath)) ?? DotNetInfo.Empty;
var data = ProjectData.Create(project);
//we are not reading the solution here
var projectIdInfo = new ProjectIdInfo(id, isDefinedInSolution: false);
Expand All @@ -116,7 +116,7 @@ public static (ProjectFileInfo, ImmutableArray<MSBuildDiagnostic>, ProjectLoaded
return (null, diagnostics, null);
}

var dotNetInfo = dotNetCli.GetInfo(Path.GetDirectoryName(projectInstance.FullPath));
var dotNetInfo = dotNetCli?.GetInfo(Path.GetDirectoryName(projectInstance.FullPath)) ?? DotNetInfo.Empty;

var data = ProjectData.Create(projectInstance);
var projectFileInfo = new ProjectFileInfo(projectIdInfo, filePath, data, sessionId, dotNetInfo);
Expand Down
2 changes: 1 addition & 1 deletion src/OmniSharp.MSBuild/ProjectLoadListener.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ private static HashedString GetProjectId(ProjectLoadedEventArgs args)

private static HashedString GetSdkVersion(ProjectLoadedEventArgs args)
{
return _tfmAndFileHashingAlgorithm.HashInput(args.SdkVersion.ToString());
return _tfmAndFileHashingAlgorithm.HashInput(args.SdkVersion?.ToString() ?? "");
}

private static HashedString GetSessionId(ProjectLoadedEventArgs args)
Expand Down
3 changes: 2 additions & 1 deletion src/OmniSharp.MSBuild/ProjectSystem.cs
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,8 @@ public void Initalize(IConfiguration configuration)
_packageDependencyChecker = new PackageDependencyChecker(_loggerFactory, _eventEmitter, _dotNetCli, _options);
_loader = new ProjectLoader(_options, _environment.TargetDirectory, _propertyOverrides, _loggerFactory, _sdksPathResolver);

_manager = new ProjectManager(_loggerFactory, _options, _eventEmitter, _fileSystemWatcher, _metadataFileReferenceCache, _packageDependencyChecker, _loader, _workspace, _assemblyLoader, _eventSinks, _dotNetCli);
var dotNetCli = _environment.WantTelemetryInfo ? _dotNetCli : null;
_manager = new ProjectManager(_loggerFactory, _options, _eventEmitter, _fileSystemWatcher, _metadataFileReferenceCache, _packageDependencyChecker, _loader, _workspace, _assemblyLoader, _eventSinks, dotNetCli);
Initialized = true;

if (_options.LoadProjectsOnDemand)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public void Dispose()
protected OmniSharpTestHost CreateMSBuildTestHost(string path, IEnumerable<ExportDescriptorProvider> additionalExports = null,
IEnumerable<KeyValuePair<string, string>> configurationData = null)
{
var environment = new OmniSharpEnvironment(path, logLevel: LogLevel.Trace);
var environment = new OmniSharpEnvironment(path, logLevel: LogLevel.Trace, wantTelemetryInfo: true);
var serviceProvider = TestServiceProvider.Create(this.TestOutput, environment, this.LoggerFactory, _assemblyLoader, _analyzerAssemblyLoader, _msbuildLocator,
configurationData);

Expand Down