Beispiel #1
0
        private void SavePullRequestSimulatedRecommendationResults(KnowledgeDistributionMap knowledgeDistributioneMap, LossSimulation lossSimulation)
        {
            var results = knowledgeDistributioneMap.PullRequestSimulatedRecommendationMap.Values;
            var bulkPullRequestSimulatedRecommendationResults = new List <Data.PullRequestRecommendationResult>();
            var bulkRecommendedPullRequestCandidatess         = new List <RecommendedPullRequestCandidate>(results.Count() * 5);

            foreach (var result in results)
            {
                bulkPullRequestSimulatedRecommendationResults.Add(new Data.PullRequestRecommendationResult()
                {
                    ActualReviewers         = result.ActualReviewers?.Count() > 0 ? result.ActualReviewers?.Aggregate((a, b) => a + ", " + b) : null,
                    SelectedReviewers       = result.SelectedReviewers?.Count() > 0 ? result.SelectedReviewers?.Aggregate((a, b) => a + ", " + b) : null,
                    SortedCandidates        = result.SortedCandidates?.Count() > 0 ? result.SortedCandidates.Take(10).Select(q => q.DeveloperName)?.Aggregate((a, b) => a + ", " + b) : null,
                    ActualReviewersLength   = result.ActualReviewers.Length,
                    SelectedReviewersLength = result.SelectedReviewers.Length,
                    SortedCandidatesLength  = result.SortedCandidates?.Length,
                    PullRequestNumber       = result.PullRequestNumber,
                    MeanReciprocalRank      = result.MeanReciprocalRank,
                    TopFiveIsAccurate       = result.TopFiveIsAccurate,
                    TopTenIsAccurate        = result.TopTenIsAccurate,
                    IsSimulated             = result.IsSimulated,
                    LossSimulationId        = lossSimulation.Id,
                    Expertise = result.Expertise,
                    IsRisky   = result.IsRisky,
                    Features  = result.Features
                });

                for (int i = 0; i < result.SortedCandidates.Take(10).Count(); i++)
                {
                    bulkRecommendedPullRequestCandidatess.Add(new RecommendedPullRequestCandidate(
                                                                  lossSimulationId: lossSimulation.Id,
                                                                  rank: i + 1, normalizedReviewerName: result.SortedCandidates[i].DeveloperName,
                                                                  score: result.SortedCandidates[i].Score,
                                                                  pullRequestNumber: result.PullRequestNumber));
                }
            }

            _dbContext.BulkInsert(bulkRecommendedPullRequestCandidatess, new BulkConfig {
                BatchSize = 50000, BulkCopyTimeout = 0
            });
            _dbContext.BulkInsert(bulkPullRequestSimulatedRecommendationResults, new BulkConfig {
                BatchSize = 50000, BulkCopyTimeout = 0
            });
        }
        public async Task Execute(string token, string agenName, string owner, string repo, string branch)
        {
            using (var dbContext = new GitRepositoryDbContext(false))
            {
                dbContext.Database.ExecuteSqlCommand($"TRUNCATE TABLE PullRequestReviewerComments");
                var githubExtractor             = new GithubDataFetcher(token, agenName, _logger);
                var pullRequestReviewerComments = await githubExtractor.FetchPullRequestReviewerCommentsFromRepository(owner, repo).ConfigureAwait(false);

                _logger.LogInformation("{datetime}: saving {count} review comments  into database.", DateTime.Now, pullRequestReviewerComments.Length);

                dbContext.BulkInsert(pullRequestReviewerComments, new BulkConfig {
                    BatchSize = 50000, BulkCopyTimeout = 0
                });

                _logger.LogInformation("{datetime}: {count} review comments have been saved into database.", DateTime.Now, pullRequestReviewerComments.Length);
            }
        }
Beispiel #3
0
        public async Task Execute(string repoPath, string branchName)
        {
            using (var dbContext = new GitRepositoryDbContext(false))
            {
                var gitRepository  = new GitRepository(repoPath, _logger);
                var orderedCommits = gitRepository.ExtractCommitsFromBranch(branchName);
                gitRepository.LoadChangesOfCommits(orderedCommits);

                _logger.LogInformation("{dateTime}: saving committed changes", DateTime.Now);

                dbContext.BulkInsert(orderedCommits.SelectMany(q => q.CommittedChanges).ToArray(), new BulkConfig {
                    BatchSize = 50000, BulkCopyTimeout = 0
                });

                _logger.LogInformation("{dateTime}: committed changes have been saved successfully", DateTime.Now);
            }
        }
        public async Task Execute(string token, string agenName, string owner, string repo, string branch)
        {
            using (var dbContext = new GitRepositoryDbContext(false))
            {
                var loadedPullRequests = await dbContext.PullRequests.ToArrayAsync().ConfigureAwait(false);

                var githubExtractor = new GithubDataFetcher(token, agenName, _logger);
                var files           = await githubExtractor.FetchFilesOfPullRequests(owner, repo, loadedPullRequests).ConfigureAwait(false);

                _logger.LogInformation("{datetime}: saving {count} pull request files into database.", DateTime.Now, files.Length);

                dbContext.BulkInsert(files, new BulkConfig {
                    BatchSize = 50000, BulkCopyTimeout = 0
                });


                _logger.LogInformation("{datetime}: pull request files have been saved successfully.", DateTime.Now, loadedPullRequests.Length);
            }
        }
Beispiel #5
0
        public async Task Execute(string token, string agenName, string owner, string repo, string branch)
        {
            using (var dbContext = new GitRepositoryDbContext(false))
            {
                dbContext.Database.ExecuteSqlCommand($"TRUNCATE TABLE PullRequestReviewers");

                var pullRequests = await dbContext.PullRequests.AsNoTracking()
                                   .OrderBy(q => q.Number)
                                   .ToArrayAsync().ConfigureAwait(false);

                _logger.LogInformation("{datetime}: trying to fetch all the assigned reviewers for all {count} pull requests.", DateTime.Now, pullRequests.Length);

                var githubExtractor    = new GithubDataFetcher(token, agenName, _logger);
                var pullRequestReviews = await githubExtractor.FetchReviewersOfPullRequests(owner, repo, pullRequests).ConfigureAwait(false);

                _logger.LogInformation("{datetime}: trying to save {count} reviewers into database.", DateTime.Now, pullRequestReviews.Length);

                dbContext.BulkInsert(pullRequestReviews, new BulkConfig {
                    BatchSize = 50000, BulkCopyTimeout = 0
                });

                _logger.LogInformation("{datetime}: reviewers has been save successfully.", DateTime.Now, pullRequestReviews.Length);
            }
        }