コード例 #1
0
ファイル: ProbeCompiler.cs プロジェクト: cmrazek/DkTools
        private void CompileThreadOutput(string line, bool stdErr)
        {
            if (_pane == null)
            {
                return;
            }

            var index = line.IndexOf(": error :");

            if (index >= 0)
            {
                string fileName;
                int    lineNum;
                if (ParseFileNameAndLine(line.Substring(0, index), out fileName, out lineNum))
                {
                    var message = line.Substring(index + ": error :".Length).Trim();
                    var task    = new DkTools.ErrorTagging.ErrorTask(fileName, lineNum - 1, -1, message, ErrorType.Error, ErrorTaskSource.Compile, null, null);
                    ErrorTaskProvider.Instance.Add(task);
                }
                _pane.WriteLine(line);
                _numErrors++;
                return;
            }

            index = line.IndexOf(": warning :");
            if (index >= 0)
            {
                string fileName;
                int    lineNum;
                if (ParseFileNameAndLine(line.Substring(0, index), out fileName, out lineNum))
                {
                    var message = line.Substring(index + ": warning :".Length).Trim();
                    var task    = new DkTools.ErrorTagging.ErrorTask(fileName, lineNum - 1, -1, message, ErrorType.Warning, ErrorTaskSource.Compile, null, null);
                    ErrorTaskProvider.Instance.Add(task);
                }
                _pane.WriteLine(line);
                _numWarnings++;
                return;
            }

            if (line.StartsWith("LINK : fatal error"))
            {
                var message = line.Substring("LINK : fatal error".Length).Trim();
                var task    = new DkTools.ErrorTagging.ErrorTask(string.Empty, 0, -1, message, ErrorType.Error, ErrorTaskSource.Compile, null, null);
                _pane.WriteLine(line);
                _numErrors++;
                return;
            }

            if (line.Equals("Build failed."))
            {
                var task = new DkTools.ErrorTagging.ErrorTask(string.Empty, 0, -1, "Build failed.", ErrorType.Error, ErrorTaskSource.Compile, null, null);
                ErrorTaskProvider.Instance.Add(task);
                _buildFailed = true;
                _pane.WriteLine(line);
                return;
            }

            if (line.IndexOf("Compile failed", StringComparison.OrdinalIgnoreCase) >= 0)
            {
                var task = new DkTools.ErrorTagging.ErrorTask(string.Empty, 0, -1, line, ErrorType.Error, ErrorTaskSource.Compile, null, null);
                ErrorTaskProvider.Instance.Add(task);
                _buildFailed = true;
                _pane.WriteLine(line);
                return;
            }

            Match match;

            if ((match = _rxLinkError.Match(line)).Success)
            {
                _pane.WriteLineAndTask(line, line.Substring(match.Groups[1].Index), OutputPane.TaskType.Error, "", 0);
                _numErrors++;
                return;
            }

            _pane.WriteLine(line);
        }