예제 #1
0
        public LabelSuggestion PredictLabel(Issue issue, string[] filePaths = null)
        {
            var userMentions = issue.Body != null?_regex.Matches(issue.Body).Select(x => x.Value).ToArray() : new string[0];

            List <LabelAreaScore> labelPredictions;

            if (filePaths == null)
            {
                var aspnetIssue = new GitHubIssue
                {
                    ID           = issue.Number,
                    Title        = issue.Title,
                    Description  = issue.Body,
                    IsPR         = 0,
                    Author       = issue.User.Login,
                    UserMentions = string.Join(' ', userMentions),
                    NumMentions  = userMentions.Length,
                };
                var prediction = _predictionEngine.Predict(aspnetIssue);
                labelPredictions = GetBestThreePredictions(prediction, forPrs: false);
            }
            else
            {
                var segmentedDiff = _diffHelper.SegmentDiff(filePaths);
                var aspnetIssue   = new GitHubPullRequest
                {
                    ID             = issue.Number,
                    Title          = issue.Title,
                    Description    = issue.Body,
                    IsPR           = 1,
                    Author         = issue.User.Login,
                    UserMentions   = string.Join(' ', userMentions),
                    NumMentions    = userMentions.Length,
                    FileCount      = filePaths.Length,
                    Files          = string.Join(' ', segmentedDiff.FileDiffs),
                    Filenames      = string.Join(' ', segmentedDiff.Filenames),
                    FileExtensions = string.Join(' ', segmentedDiff.Extensions),
                    FolderNames    = _diffHelper.FlattenWithWhitespace(segmentedDiff.FolderNames),
                    Folders        = _diffHelper.FlattenWithWhitespace(segmentedDiff.Folders)
                };
                var prediction = _prPredictionEngine.Predict(aspnetIssue);
                labelPredictions = GetBestThreePredictions(prediction, forPrs: true);
            }

            return(new LabelSuggestion
            {
                LabelScores = labelPredictions,
            });
        }
예제 #2
0
        public LabelSuggestion PredictLabel(Issue issue)
        {
            var aspnetIssue = new GitHubIssue
            {
                ID          = issue.Number.ToString(),
                Title       = issue.Title,
                Description = issue.Body
            };

            var prediction       = _predictionEngine.Predict(aspnetIssue);
            var labelPredictions = GetBestThreePredictions(prediction);

            return(new LabelSuggestion
            {
                LabelScores = labelPredictions,
            });
        }