Exemplo n.º 1
0
        public async Task CraeteAsync(int issueId, string tagsString)
        {
            if (string.IsNullOrWhiteSpace(tagsString))
            {
                return;
            }

            var parsedTags = this.stringService
                             .SplitByEmptySpace(tagsString.ToLower());

            var uniqueTags = new HashSet <string>(parsedTags);

            foreach (var uniqueTag in uniqueTags)
            {
                var tag = await this.tagsService.CreateAsync(uniqueTag);

                var issueTag = new IssueTag
                {
                    IssueId = issueId,
                    Tag     = tag,
                };

                await this.repository.AddAsync(issueTag);
            }

            await this.repository.SaveChangesAsync();
        }
Exemplo n.º 2
0
 private void Issues_ItemDoubleClick(object sender, ListViewItem item)
 {
     if (item != null && item.Tag != null)
     {
         IssueTag     tag   = (IssueTag)item.Tag;
         TextPosition pos   = tag.Pos;
         EditorState  state = tag.State;
         TabPage      tab   = (TabPage)state.Tag;
         tcFiles.SelectedTab = tab;
         state.GoToPosition(pos.Index);
     }
 }
Exemplo n.º 3
0
        private void AddIssue(FilterListView listView, IssueTag tag, IssueType type, string message, string symbolName, string symbolType, string group, int line, string file)
        {
            ListViewItem newItem = new ListViewItem(message);

            newItem.Tag        = tag;
            newItem.ImageIndex = (int)type;
            newItem.SubItems.Add(symbolName);
            newItem.SubItems.Add(symbolType);
            newItem.SubItems.Add(group);
            newItem.SubItems.Add(line.ToString());
            newItem.SubItems.Add(file);
            listView.AddItem(newItem);
        }
Exemplo n.º 4
0
        private void RefreshIssues(IEnumerable <EditorState> states)
        {
            int      selectedCppIssueIndex  = lvCppIssues.SelectedIndex;
            int      selectedDoxyIssueIndex = lvCppIssues.SelectedIndex;
            IssueTag selectedCppIssue       = lvCppIssues.SelectedItem?.Tag as IssueTag;
            IssueTag selectedDoxyIssue      = lvDoxygenIssues.SelectedItem?.Tag as IssueTag;

            lvCppIssues.BeginUpdate();
            lvDoxygenIssues.BeginUpdate();

            lvCppIssues.ClearSelection();
            lvDoxygenIssues.ClearSelection();

            lvCppIssues.ClearItems();
            lvDoxygenIssues.ClearItems();

            // Validate symbols from cache
            var symbolErrors = SymbolCache.Validate();

            foreach (var errorPair in symbolErrors)
            {
                var error    = errorPair.Value;
                var state    = (EditorState)errorPair.Key;
                var symbol   = (ReferenceSymbol)error.Tag;
                var nodeType = symbol.Node.GetType();
                if (typeof(CppNode).Equals(nodeType))
                {
                    AddIssue(lvCppIssues, new IssueTag(state, error.Pos), IssueType.Error, error.Message, error.Symbol, error.Type, error.Category, error.Pos.Line + 1, state.Name);
                }
                else if (typeof(DoxygenNode).Equals(nodeType))
                {
                    AddIssue(lvDoxygenIssues, new IssueTag(state, error.Pos), IssueType.Error, error.Message, error.Symbol, error.Type, error.Category, error.Pos.Line + 1, state.Name);
                }
            }

            foreach (EditorState state in states)
            {
                foreach (var error in state.Errors)
                {
                    var errorType = error.Tag.GetType();
                    if (typeof(CppLexer).Equals(errorType) || typeof(CppParser).Equals(errorType))
                    {
                        AddIssue(lvCppIssues, new IssueTag(state, error.Pos), IssueType.Error, error.Message, null, null, error.Category, error.Pos.Line + 1, state.Name);
                    }
                    else if (typeof(DoxygenLexer).Equals(errorType) || typeof(DoxygenParser).Equals(errorType))
                    {
                        AddIssue(lvDoxygenIssues, new IssueTag(state, error.Pos), IssueType.Error, error.Message, null, null, error.Category, error.Pos.Line + 1, state.Name);
                    }
                }

                if (state.CppTree != null)
                {
                    AddIssuesFromNode(states, state, state.CppTree, state.Name, "Root");
                }
            }

            lvCppIssues.RefreshItems();
            lvDoxygenIssues.RefreshItems();

            lvCppIssues.SelectItemOrIndex(selectedCppIssue, selectedCppIssueIndex);
            lvDoxygenIssues.SelectItemOrIndex(selectedDoxyIssue, selectedDoxyIssueIndex);

            lvCppIssues.EndUpdate();
            lvDoxygenIssues.EndUpdate();

            tpCppIssues.Text     = $"C/C++ Issues [{lvCppIssues.ItemCount}]";
            tpDoxygenIssues.Text = $"Doxygen Issues [{lvDoxygenIssues.ItemCount}]";
        }