示例#1
0
        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));
     }
 }
示例#3
0
        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));
        }