public void AddMarker(MarkerStrategy markerStrategy, CodeCoverageSequencePoint sequencePoint) { if (!IsValidSequencePoint(markerStrategy.Document, sequencePoint)) { return; } if (sequencePoint.EndLine == sequencePoint.Line) { LineSegment lineSegment = markerStrategy.Document.GetLineSegment(sequencePoint.Line - 1); markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset + sequencePoint.Column - 1, sequencePoint)); } else { // Sequence point spread across lines. for (int line = sequencePoint.Line; line <= sequencePoint.EndLine; ++line) { LineSegment lineSegment = markerStrategy.Document.GetLineSegment(line - 1); if (line == sequencePoint.Line) { // First line. markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset + sequencePoint.Column - 1, lineSegment.Length - (sequencePoint.Column - 1), sequencePoint)); } else if (line == sequencePoint.EndLine) { // Last line. markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset, sequencePoint.EndColumn - 1, sequencePoint)); } else { markerStrategy.AddMarker(new CodeCoverageTextMarker(lineSegment.Offset, lineSegment.Length, sequencePoint)); } } } }
/// <summary> /// Adds a single marker for the XPathNodeMatch. /// </summary> public static void AddMarker(MarkerStrategy markerStrategy, XPathNodeMatch node) { if (node.HasLineInfo() && node.Value.Length > 0) { LineSegment lineSegment = markerStrategy.Document.GetLineSegment(node.LineNumber); markerStrategy.AddMarker(new XPathNodeTextMarker(lineSegment.Offset + node.LinePosition, node)); } }
public void MarkErrors(ICompilable item, bool sourceHeader) { RemoveMarks(); MarkerStrategy markers = editor.Document.MarkerStrategy; string filename = Compiler.SourceFile(item).ToLower(); errors.Rows.Clear(); foreach (CompilerError err in Errors(item, sourceHeader)) { if (filename == err.FileName.ToLower()) { TextMarker marker = ErrMarker(err); if (marker != null) { markers.AddMarker(marker); } // update data grid DataGridViewRow row = new DataGridViewRow(); DataGridViewImageCell img = new DataGridViewImageCell(); if (err.IsWarning) { img.Value = Properties.Resources.warningimg; } else { img.Value = Properties.Resources.errorimg; } img.Tag = item; row.Cells.Add(img); DataGridViewTextBoxCell pos = new DataGridViewTextBoxCell(); pos.Value = err.Line.ToString() + ":" + err.Column.ToString(); row.Cells.Add(pos); DataGridViewTextBoxCell text = new DataGridViewTextBoxCell(); text.Value = CompilerErrors.Message(err); text.Style.WrapMode = DataGridViewTriState.True; text.Tag = err; row.Cells.Add(text); errors.Rows.Add(row); row.Resizable = DataGridViewTriState.False; } } errors.AutoResizeRows(); if (item.CompilerResults.Errors.Count > 0) { ShowErrors(); } editor.Refresh(); }
public void SetUpTestFixture() { try { string configFolder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "NCoverAddIn.Tests"); PropertyService.InitializeService(configFolder, Path.Combine(configFolder, "data"), "NCoverAddIn.Tests"); } catch (Exception) {} IDocument document = MockDocument.Create(); string code = "\t\t{\r\n" + "\t\t\tint count = 0;\r\n" + "\t\t}\r\n"; document.TextContent = code; markerStrategy = new MarkerStrategy(document); string xml = "<PartCoverReport>\r\n" + "\t<File id=\"1\" url=\"c:\\Projects\\Foo\\FooTestFixture.cs\"/>\r\n" + "\t<Assembly id=\"1\" name=\"Foo.Tests\" module=\"C:\\Projects\\Test\\bin\\Foo.Tests.DLL\" domain=\"test-domain-Foo.Tests.dll\" domainIdx=\"1\" />\r\n" + "\t<Type name=\"Foo.Tests.FooTestFixture\" asmref=\"1\">\r\n" + "\t\t<Method name=\"SimpleTest\">\r\n" + "\t\t\t<pt visit=\"1\" sl=\"1\" sc=\"3\" el=\"1\" ec=\"4\" fid=\"1\" />\r\n" + "\t\t\t<pt visit=\"1\" sl=\"2\" sc=\"4\" el=\"2\" ec=\"18\" fid=\"1\" />\r\n" + "\t\t\t<pt visit=\"0\" sl=\"3\" sc=\"3\" el=\"3\" ec=\"4\" fid=\"1\" />\r\n" + "\t\t</Method>\r\n" + "\t</Type>\r\n" + "</PartCoverReport>"; CodeCoverageResults results = new CodeCoverageResults(new StringReader(xml)); CodeCoverageMethod method = results.Modules[0].Methods[0]; CodeCoverageHighlighter highlighter = new CodeCoverageHighlighter(); highlighter.AddMarkers(markerStrategy, method.SequencePoints); // Add non-code coverage markers. markerStrategy.AddMarker(new TextMarker(0, 2, TextMarkerType.Underlined)); markerStrategy.AddMarker(new TextMarker(4, 5, TextMarkerType.Underlined)); }