Module: Gitrob::CLI::Commands::Analyze::Analysis

Included in:
Gitrob::CLI::Commands::Analyze
Defined in:
lib/gitrob/cli/commands/analyze/analysis.rb

Instance Method Summary collapse

Instance Method Details

#analyze_blobs(blobs, db_repo, db_owner, progress) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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_repositoriesObject



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 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) ⇒ Object



43
44
45
46
47
48
49
# 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