예제 #1
0
        //methods
        private static Exception GetResultException(string _msg)
        {
            BuildError _be = BuildError.ExpandedNodeIdInvalidSyntax;
            Exception  _ex = new ServiceResultException(TraceMessage.BuildErrorTraceMessage(_be, _msg), _be.ToString() + _msg);

            return(_ex);
        }
예제 #2
0
            public void HandleError(BuildError error)
            {
                LoggingService.Debug("FxCopLogger got " + error.ToString());

                string[] moreData = (error.Subcategory ?? "").Split('|');
                string   checkId  = error.ErrorCode;

                error.ErrorCode = (error.ErrorCode != null) ? error.ErrorCode.Split(':')[0] : null;
                if (FileUtility.IsValidPath(error.FileName) &&
                    Path.GetFileName(error.FileName) == "SharpDevelop.CodeAnalysis.targets")
                {
                    error.FileName = null;
                }
                IProject project = ProjectService.GetProject(engineWorker.ProjectFileName);

                if (project != null)
                {
                    IProjectContent pc = ParserService.GetProjectContent(project);
                    if (pc != null)
                    {
                        if (error.FileName != null)
                        {
                            int pos = error.FileName.IndexOf("positionof#", StringComparison.Ordinal);
                            if (pos >= 0)
                            {
                                string       memberName = error.FileName.Substring(pos + 11);
                                FilePosition filePos    = GetPosition(pc, memberName);
                                if (filePos.IsEmpty == false && filePos.CompilationUnit != null)
                                {
                                    error.FileName = filePos.FileName ?? "";
                                    error.Line     = filePos.Line;
                                    error.Column   = filePos.Column;
                                }
                                else
                                {
                                    error.FileName = null;
                                }
                            }
                        }

                        if (moreData.Length > 1 && !string.IsNullOrEmpty(moreData[0]))
                        {
                            error.Tag = new FxCopTaskTag {
                                ProjectContent = pc,
                                TypeName       = moreData[0],
                                MemberName     = moreData[1],
                                Category       = error.HelpKeyword,
                                CheckID        = checkId
                            };
                        }
                        else
                        {
                            error.Tag = new FxCopTaskTag {
                                ProjectContent = pc,
                                Category       = error.HelpKeyword,
                                CheckID        = checkId
                            };
                        }
                        error.ContextMenuAddInTreeEntry = "/SharpDevelop/Pads/ErrorList/CodeAnalysisTaskContextMenu";
                        if (moreData.Length > 2)
                        {
                            (error.Tag as FxCopTaskTag).MessageID = moreData[2];
                        }
                    }
                }
                nextChainElement.HandleError(error);
            }