Пример #1
0
        private void osbideCommandBarEvent_Click(object CommandBarControl, ref bool Handled, ref bool CancelDefault)
        {
            ErrorListItem listItem = new ErrorListItem();
            DTE2          dte      = (DTE2)this.GetService(typeof(SDTE));

            if (dte != null)
            {
                Array selectedItems = (Array)dte.ToolWindows.ErrorList.SelectedItems;
                if (selectedItems != null)
                {
                    foreach (ErrorItem item in selectedItems)
                    {
                        listItem = ErrorListItem.FromErrorItem(item);
                    }
                }
            }

            if (string.IsNullOrEmpty(listItem.CriticalErrorName) == false)
            {
                string url = string.Format("{0}?errorTypeStr={1}&component={2}", StringConstants.ActivityFeedUrl, listItem.CriticalErrorName, OsbideVsComponent.FeedOverview);
                OpenActivityFeedWindow(url);
            }
            else
            {
                MessageBox.Show("OSBIDE only supports search for errors");
            }
        }
 /// <summary>
 /// Function to append error in errors dictionary.
 /// </summary>
 /// <param name="errorsDictionary">Errors dictionary</param>
 /// <param name="error">Error information</param>
 private static void Append(Dictionary<string, string> errorsDictionary, ErrorListItem error)
 {
     if (!errorsDictionary.ContainsKey(error.FieldName))
     {
         errorsDictionary.Add(error.FieldName, error.Message);
     }
 }
Пример #3
0
        public virtual void ErrorsDuringMethodBodyEditing()
        {
            VisualStudio.Editor.SetText(
                @"
Namespace N
    Class C
        Private F As Integer
        Sub S()
             ' Comment
        End Sub
    End Class
End Namespace
"
                );
            VisualStudio.Editor.PlaceCaret(" Comment", charsOffset: -2);
            VisualStudio.SendKeys.Send("F = 0");
            VisualStudio.ErrorList.ShowErrorList();
            var expectedContents = new ErrorListItem[] { };
            var actualContents   = VisualStudio.ErrorList.GetErrorListContents();

            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );

            VisualStudio.Editor.Activate();
            VisualStudio.Editor.PlaceCaret("F = 0 ' Comment", charsOffset: -1);
            VisualStudio.Editor.SendKeys("F");
            VisualStudio.ErrorList.ShowErrorList();
            expectedContents = new ErrorListItem[]
            {
                new ErrorListItem(
                    severity: "Error",
                    description: "'FF' is not declared. It may be inaccessible due to its protection level.",
                    project: "TestProj",
                    fileName: "Class1.vb",
                    line: 6,
                    column: 13
                    )
            };
            actualContents = VisualStudio.ErrorList.GetErrorListContents();
            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );

            VisualStudio.Editor.Activate();
            VisualStudio.Editor.PlaceCaret("FF = 0 ' Comment", charsOffset: -1);
            VisualStudio.Editor.SendKeys(VirtualKey.Delete);
            VisualStudio.ErrorList.ShowErrorList();
            expectedContents = new ErrorListItem[] { };
            actualContents   = VisualStudio.ErrorList.GetErrorListContents();
            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );
        }
Пример #4
0
        public virtual void ErrorsAfterClosingFile()
        {
            VisualStudio.Editor.SetText(
                @"
class Program2
{
    static void Main(string[] args)
    {
        int aa = 7;
        int a = aa;
    }
}
"
                );
            VisualStudio.ErrorList.ShowErrorList();
            var expectedContents = new ErrorListItem[] { };
            var actualContents   = VisualStudio.ErrorList.GetErrorListContents();

            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );

            VisualStudio.Editor.Activate();
            VisualStudio.Editor.PlaceCaret("a = aa", charsOffset: -1);
            VisualStudio.Editor.SendKeys("a");
            VisualStudio.ErrorList.ShowErrorList();
            expectedContents = new[]
            {
                new ErrorListItem(
                    severity: "Error",
                    description: "A local variable or function named 'aa' is already defined in this scope",
                    project: "TestProj",
                    fileName: "Class1.cs",
                    line: 7,
                    column: 13
                    )
            };
            actualContents = VisualStudio.ErrorList.GetErrorListContents();
            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );

            // Close the current document and verify diagnostics for closed document are not removed from error list.
            VisualStudio.SolutionExplorer.SaveAll();
            VisualStudio.Editor.SendExplicitFocus();
            VisualStudio.Editor.SendKeys(new KeyPress(VirtualKey.F4, ShiftState.Ctrl));
            VisualStudio.ErrorList.ShowErrorList();
            actualContents = VisualStudio.ErrorList.GetErrorListContents();
            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );
        }
Пример #5
0
        public virtual void ErrorsDuringMethodBodyEditing()
        {
            VisualStudio.Editor.SetText(
                @"
class Program2
{
    static void Main(string[] args)
    {
        int aa = 7;
        int a = aa;
    }
}
"
                );
            VisualStudio.ErrorList.ShowErrorList();
            var expectedContents = new ErrorListItem[] { };
            var actualContents   = VisualStudio.ErrorList.GetErrorListContents();

            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );

            VisualStudio.Editor.Activate();
            VisualStudio.Editor.PlaceCaret("a = aa", charsOffset: -1);
            VisualStudio.Editor.SendKeys("a");
            VisualStudio.ErrorList.ShowErrorList();
            expectedContents = new[]
            {
                new ErrorListItem(
                    severity: "Error",
                    description: "A local variable or function named 'aa' is already defined in this scope",
                    project: "TestProj",
                    fileName: "Class1.cs",
                    line: 7,
                    column: 13
                    )
            };
            actualContents = VisualStudio.ErrorList.GetErrorListContents();
            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );

            VisualStudio.Editor.Activate();
            VisualStudio.Editor.PlaceCaret("aa = aa", charsOffset: -1);
            VisualStudio.Editor.SendKeys(VirtualKey.Delete);
            VisualStudio.ErrorList.ShowErrorList();
            expectedContents = new ErrorListItem[] { };
            actualContents   = VisualStudio.ErrorList.GetErrorListContents();
            AssertEx.EqualOrDiff(
                string.Join <ErrorListItem>(Environment.NewLine, expectedContents),
                string.Join <ErrorListItem>(Environment.NewLine, actualContents)
                );
        }
Пример #6
0
        private Guid LogMessage(ErrorViewModel viewModel)
        {
            var log = new ErrorListItem(
                itemType: Sdk.Enums.ErrorListItemType.Message,
                number: 1,
                description: "New message log " + DateTime.Now.Ticks,
                path: "Message Path",
                line: 3,
                column: 1);

            viewModel.LogError(log);

            return(log.Id);
        }
Пример #7
0
        private Guid LogWarning(ErrorViewModel viewModel)
        {
            var log = new ErrorListItem(
                itemType: Sdk.Enums.ErrorListItemType.Warning,
                number: 1,
                description: "New warning log " + DateTime.Now.Ticks,
                path: "Warning Path",
                line: 2,
                column: 1);

            viewModel.LogError(log);

            return(log.Id);
        }
Пример #8
0
        private void OnErrorItemQuery(object sender, ErrorListItem e)
        {
            var shell = IoC.Get <IShell>();

            var editor =
                shell.Documents.OfType <ICodeEditor>()
                .FirstOrDefault(p => string.Equals(p.FilePath, e.Path, StringComparison.OrdinalIgnoreCase));

            if (editor == null)
            {
                return;
            }

            shell.OpenDocument(editor);
            HideCommand?.Execute(this);
            editor.Goto(e.Line ?? 0, Math.Max(0, e.Column ?? 0));
        }
Пример #9
0
        private void InitializeBookmark(TextMarkerService textMarkerService, int lineNumber, int column, int startOffset, int length, string message, string fileName)
        {
            // Create a text marker
            OffsetInLine = column;
            TextMarker   = textMarkerService.TryCreate(startOffset, length);

            if (TextMarker != null)
            {
                switch (BookmarkType)
                {
                case BookmarkType.AnalyzerInfo:
                    TextMarker.MarkerColor = Colors.AliceBlue;
                    break;

                case BookmarkType.AnalyzerWarning:
                    TextMarker.MarkerColor = Colors.DarkGoldenrod;
                    break;
                }
            }

            var errorListItemType = default(ErrorListItemType);

            switch (BookmarkType)
            {
            case BookmarkType.AnalyzerInfo:
                errorListItemType = ErrorListItemType.Message;
                break;

            case BookmarkType.AnalyzerWarning:
                errorListItemType = ErrorListItemType.Warning;
                break;
            }

            // Create an error list item
            Execute.OnUIThread(() =>
            {
                lock (_lock)
                {
                    ErrorListItem = new ErrorListItem(errorListItemType, _errorList.Items.Count, message, fileName, lineNumber, column);
                    _errorList.Items.Add(ErrorListItem);
                }
            });
        }
Пример #10
0
        public virtual void ErrorsDuringMethodBodyEditing()
        {
            VisualStudio.Editor.SetText(@"
using System;

class Program2
{
    static void Main(string[] args)
    {
        Func<int, int> a = aa => 7;
    }
}
");
            VisualStudio.ErrorList.ShowErrorList();
            var expectedContents = new ErrorListItem[] { };
            var actualContents   = VisualStudio.ErrorList.GetErrorListContents();

            Assert.Equal(expectedContents, actualContents);

            VisualStudio.Editor.Activate();
            VisualStudio.Editor.PlaceCaret("a = aa", charsOffset: -1);
            VisualStudio.Editor.SendKeys("a");
            VisualStudio.ErrorList.ShowErrorList();
            expectedContents = new[] {
                new ErrorListItem(
                    severity: "Error",
                    description: "A local or parameter named 'aa' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter",
                    project: "TestProj.csproj",
                    fileName: "Class1.cs",
                    line: 8,
                    column: 29)
            };
            actualContents = VisualStudio.ErrorList.GetErrorListContents();
            Assert.Equal(expectedContents, actualContents);

            VisualStudio.Editor.Activate();
            VisualStudio.Editor.PlaceCaret("aa = aa", charsOffset: -1);
            VisualStudio.Editor.SendKeys(VirtualKey.Delete);
            VisualStudio.ErrorList.ShowErrorList();
            expectedContents = new ErrorListItem[] { };
            actualContents   = VisualStudio.ErrorList.GetErrorListContents();
            Assert.Equal(expectedContents, actualContents);
        }
Пример #11
0
        public static ErrorListItem ErrorItemToErrorListItem(ErrorItem item)
        {
            var eli = new ErrorListItem();

            //the original comment from AC
            //Sometimes ErrorItem references are invalid.  Not sure why.
            try
            {
                eli.Project     = item.Project;
                eli.Column      = item.Column;
                eli.Line        = item.Line;
                eli.File        = item.FileName;
                eli.Description = item.Description;
            }
            catch (Exception)
            {
                // ignored
            }

            return(eli);
        }
Пример #12
0
        public override void OnBuildDone(vsBuildScope Scope, vsBuildAction Action)
        {
            base.OnBuildDone(Scope, Action);

            //this might take a while, so throw it in its own thread
            //System.Threading.Tasks.Task.Factory.StartNew(
            //    () =>
            //    {
            BuildEvent    build           = new BuildEvent();
            List <string> filesWithErrors = new List <string>();

            build.SolutionName = dte.Solution.FullName;
            build.EventDate    = DateTime.UtcNow;

            //start at 1 when iterating through Error List
            for (int i = 1; i <= dte.ToolWindows.ErrorList.ErrorItems.Count; i++)
            {
                ErrorItem item = dte.ToolWindows.ErrorList.ErrorItems.Item(i);
                BuildEventErrorListItem beli = new BuildEventErrorListItem();
                beli.BuildEvent    = build;
                beli.ErrorListItem = ErrorListItem.FromErrorItem(item);

                //only worry about critical errors
                if (beli.ErrorListItem.CriticalErrorName.Length > 0)
                {
                    build.ErrorItems.Add(beli);

                    //add the file with the error to our list of items that have errors
                    if (filesWithErrors.Contains(beli.ErrorListItem.File.ToLower()) == false)
                    {
                        filesWithErrors.Add(beli.ErrorListItem.File.ToLower());
                    }
                }
            }

            //add in breakpoint information
            for (int i = 1; i <= dte.Debugger.Breakpoints.Count; i++)
            {
                BreakPoint           bp   = new BreakPoint(dte.Debugger.Breakpoints.Item(i));
                BuildEventBreakPoint bebp = new BuildEventBreakPoint();
                bebp.BreakPoint = bp;
                bebp.BuildEvent = build;
                build.Breakpoints.Add(bebp);
            }

            //get all files in the solution
            List <CodeDocument> files = build.GetSolutionFiles(dte.Solution);

            //add in associated documents
            foreach (CodeDocument file in files)
            {
                BuildDocument bd = new BuildDocument();
                bd.Build    = build;
                bd.Document = file;
                build.Documents.Add(bd);
            }

            byte[] data = EventFactory.ToZippedBinary(build);

            //let others know that we have created a new event
            NotifyEventCreated(this, new EventCreatedArgs(build));
            //}
            //);
        }
Пример #13
0
 public void LogError(ErrorListItem error)
 {
     Items.Add(error);
 }