Ejemplo n.º 1
0
 public ParseResults(ParsingConfidence confidence, string link, int id)
 {
     Confidence      = confidence;
     Link            = link;
     ID              = id;
     BugzillaSummary = "";
     TargetMilestone = "";
     Status          = "";
     Importance      = "";
 }
Ejemplo n.º 2
0
 public ParsedCommit(CommitInfo commit, string link, int id, ParsingConfidence confidence, string bugzillaSummary, string targetMilestone, string status, string importance)
 {
     Commit          = commit;
     Link            = link;
     ID              = id;
     Confidence      = confidence;
     BugzillaSummary = bugzillaSummary;
     TargetMilestone = targetMilestone;
     Status          = status;
     Importance      = importance;
 }
Ejemplo n.º 3
0
        void TestConfidenceOfCommit(string hash, string expectedUrl, ParsingConfidence expectedConfidence, Option <SearchOptions> options)
        {
            var commit = CommitFinder.ParseSingle(TestDataLocator.GetPath(), hash);

            Assert.IsTrue(commit.HasValue);
            commit.MatchSome(c =>
            {
                var parsedCommits = CommitParser.ParseSingle(c, options.ValueOr(new SearchOptions()
                {
                    Bugzilla = BugzillaLevel.Private
                }));

                Assert.AreEqual(1, parsedCommits.Count(), $"{hash} did not parse into one bug commit");
                var parsedCommit = parsedCommits.First();

                Assert.AreEqual(expectedUrl, parsedCommit.Link, $"{hash} link {parsedCommit.Link} did not match expected {expectedUrl}");
                Assert.AreEqual(expectedConfidence, parsedCommit.Confidence, $"{hash} confidence {parsedCommit.Confidence} did not match expected {expectedConfidence}");
            });
        }
Ejemplo n.º 4
0
 void TestConfidenceOfCommit(string hash, string expectedUrl, ParsingConfidence expectedConfidence) => TestConfidenceOfCommit(hash, expectedUrl, expectedConfidence, Option.None <SearchOptions> ());
Ejemplo n.º 5
0
        static ParseResults ParseLine(string line, SearchOptions options)
        {
            try
            {
                Explain.Indent();
                foreach (Regex regex in AllRegex)
                {
                    var match = regex.Match(line);
                    if (match.Success)
                    {
                        int id;
                        if (int.TryParse(match.Groups[match.Groups.Count - 1].Value, out id))
                        {
                            Explain.Print($"Line \"{StripNewLine (line)}\" matched pattern {regex}.");

                            if (id < 1000 || id > 250000)
                            {
                                Explain.Print($"Had an invalid id {id}.");
                                return(new ParseResults {
                                    Confidence = ParsingConfidence.Invalid
                                });
                            }

                            Explain.Print($"Had a valid id {id}.");

                            ParsingConfidence confidence = ParsingConfidence.High;

                            if (line.StartsWith("Context", StringComparison.InvariantCultureIgnoreCase))
                            {
                                confidence = ParsingConfidence.Invalid;
                            }

                            Explain.Print($"Default Confidence was {confidence}.");
                            if (options.Bugzilla != BugzillaLevel.Disable)
                            {
                                var bugzillaSummary = GetTitle(id, options);
                                if (bugzillaSummary == null)
                                {
                                    confidence = ParsingConfidence.Low;
                                    Explain.Print($"Given low confidence due to lack of a matching bugzilla bug.");
                                    return(new ParseResults(confidence, match.Value, id));
                                }
                                var status     = GetStatus(id, options);
                                var milestone  = GetMilestone(id, options);
                                var importance = GetImportance(id, options);

                                return(new ParseResults(confidence, match.Value, id)
                                {
                                    BugzillaSummary = bugzillaSummary,
                                    Status = status,
                                    TargetMilestone = milestone,
                                    Importance = importance
                                });
                            }
                            return(new ParseResults(confidence, match.Value, id));
                        }
                    }
                }
                return(new ParseResults {
                    Confidence = ParsingConfidence.Invalid
                });
            }
            finally
            {
                Explain.Deindent();
            }
        }