module Gitrob::CLI::Commands::Analyze::Analysis

Public Instance Methods

analyze_blobs(blobs, db_repo, db_owner, progress) click to toggle source
# File lib/gitrob/cli/commands/analyze/analysis.rb, line 23
def analyze_blobs(blobs, db_repo, db_owner, progress)
  findings = 0
  blobs.each do |blob|
    db_blob = @db_assessment.save_blob(blob, db_repo, db_owner)
    Gitrob::BlobObserver.observe(db_blob)
    if db_blob.flags.count > 0
      findings += 1
      @db_assessment.findings_count += 1
      db_owner.findings_count += 1
      db_repo.findings_count += 1
    end
  end
  db_owner.save
  db_repo.save
  progress.increment
  report_findings(findings, db_repo, progress)
rescue => e
  progress.error("#{e.class}: #{e.message}")
end
analyze_repositories() click to toggle source
# File lib/gitrob/cli/commands/analyze/analysis.rb, line 6
def analyze_repositories
  repo_progress_bar do |progress|
    github_data_manager.owners.each do |owner|
      @db_owner = @db_assessment.save_owner(owner)
      thread_pool do |pool|
        repositories_for_owner(owner).each do |repo|
          pool.process do
            db_repo = @db_assessment.save_repository(repo, @db_owner)
            blobs   = blobs_for_repository(repo)
            analyze_blobs(blobs, db_repo, @db_owner, progress)
          end
        end
      end
    end
  end
end
report_findings(finding_count, repo, progress) click to toggle source
# File lib/gitrob/cli/commands/analyze/analysis.rb, line 43
def report_findings(finding_count, repo, progress)
  return if finding_count.zero?
  files = finding_count == 1 ? "1 file" : "#{finding_count} files"
  progress.info(
    "Flagged #{files.to_s.light_yellow} " \
    "in #{repo.full_name.bold}")
end