public void Init() { Isolate.WhenCalled(() => FS.FileSystem).WillReturn(new MockFileSystem()); Isolate.WhenCalled(() => CommonRegistryConfigurations.IsSolutionEnabled("", "")).WillReturn(true); Isolate.WhenCalled(() => CommonRegistryConfigurations.IsErrorTrackingEnabled("")).WillReturn(false); Isolate.WhenCalled(() => CommonRegistryConfigurations.IsLoggingEnabled("")).WillReturn(false); }
public void Init() { Isolate.WhenCalled(() => FS.FileSystem).WillReturn(MockFileSystem); Isolate.WhenCalled(() => CommonRegistryConfigurations.Map3RdPartyAssembly("", "")).WillReturn(false); Isolate.WhenCalled(() => CommonRegistryConfigurations.IsErrorTrackingEnabled("")).WillReturn(false); Isolate.WhenCalled(() => CommonRegistryConfigurations.IsLoggingEnabled("")).WillReturn(false); }
/// <summary> /// Initializes a new instance of the <see cref="VisualizerAttributeInjector"/> class. /// </summary> /// <param name="targetVisualizerAssemblyPath">The assembly debugger visualizer location.</param> /// <param name="targetVsVersion">The targeted Visual Studio version</param> /// <exception cref="System.IO.FileNotFoundException"></exception> public VisualizerAttributeInjector(string targetVisualizerAssemblyPath, string targetVsVersion) { if (!FS.FileSystem.File.Exists(targetVisualizerAssemblyPath)) { throw new FileNotFoundException( $"Assembly doesn't exist at location {targetVisualizerAssemblyPath}"); } //usually vsVersion has this format 15.0 so I'm only interested in the first part string versionNumber = targetVsVersion.Split('.').FirstOrDefault(); int.TryParse(versionNumber, out int vsVersion); if (vsVersion == 0) { throw new ArgumentException($"Visual Studio version is incorrect {_targetVsVersion}"); } _targetVsVersion = vsVersion; //create pdb info if logging or error tracking is enabled bool createPdbInfo = CommonRegistryConfigurations.IsLoggingEnabled(targetVsVersion); createPdbInfo |= CommonRegistryConfigurations.IsErrorTrackingEnabled(targetVsVersion); _writerParameters = new WriterParameters { WriteSymbols = createPdbInfo, SymbolWriterProvider = createPdbInfo ? new PdbWriterProvider() : null }; ReaderParameters readerParameters = new ReaderParameters { AssemblyResolver = GetAssemblyResolver(targetVisualizerAssemblyPath), ReadingMode = ReadingMode.Immediate, SymbolReaderProvider = createPdbInfo ? new PdbReaderProvider() : null, InMemory = true, ReadSymbols = createPdbInfo, ThrowIfSymbolsAreNotMatching = false, }; //using a stream is better for testing _assemblyStream = FS.FileSystem.File.OpenRead(targetVisualizerAssemblyPath); _debuggerVisualizerAssembly = AssemblyDefinition.ReadAssembly(_assemblyStream, readerParameters); InitializeDebuggerAssembly(); RemapAssembly(); }
public void Capture(Exception exception, ErrorLevel errorLevel = ErrorLevel.Error, string message = "") { if (!CommonRegistryConfigurations.IsErrorTrackingEnabled(VisualStudioVersion)) { return; } var sentryEvent = new SentryEvent(exception) { Message = message, Level = errorLevel }; sentryEvent.Tags.Add("Visual Studio Version", VisualStudioVersion); _ravenClient.Capture(sentryEvent); }
public void Init() { Isolate.WhenCalled(() => FS.FileSystem).WillReturn(MockFileSystem); object[] args = { AssemblyToInjectLocation, FileMode.Open, FileAccess.ReadWrite, FileShare.Read }; Stream access = FS.FileSystem.File.Open(AssemblyToInjectLocation, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); Isolate.NonPublic.WhenCalled(typeof(ModuleDefinition), "GetFileStream") .WithExactArguments(args) .WillReturn(access); Isolate.WhenCalled(() => CommonRegistryConfigurations.Map3RdPartyAssembly("", "")).WillReturn(false); Isolate.WhenCalled(() => CommonRegistryConfigurations.IsErrorTrackingEnabled("")).WillReturn(false); Isolate.WhenCalled(() => CommonRegistryConfigurations.IsLoggingEnabled("")).WillReturn(false); }
public static void Capture(this Exception exception, string vsVersion, ErrorLevel errorLevel = ErrorLevel.Error, string message = "") { if (string.IsNullOrEmpty(vsVersion)) { return; } if (!CommonRegistryConfigurations.IsErrorTrackingEnabled(vsVersion)) { return; } Func <Requester, Requester> removeUserId = new Func <Requester, Requester>(request => { //GDPR compliant, no personal data sent: no server name, no username stored, no ip address request.Packet.ServerName = LinqBridgeVs; request.Packet.Contexts.Device.Name = LinqBridgeVs; request.Packet.User.Username = CommonRegistryConfigurations.GetUniqueGuid(vsVersion); request.Packet.Release = Assembly.GetExecutingAssembly().VersionNumber(); request.Packet.User.IpAddress = "0.0.0.0"; return(request); }); SentryEvent sentryEvent = new SentryEvent(exception) { Message = message, Level = errorLevel }; sentryEvent.Tags.Add("Visual Studio Version", vsVersion); RavenClient ravenClient = new RavenClient(RavenClientId) { BeforeSend = removeUserId, ErrorOnCapture = OnSendError, Timeout = TimeSpan.FromMilliseconds(Timeout) //should fail early if it can't send a message }; ravenClient.Capture(sentryEvent); }