/**
  * Run the analysis.
  *
  * @param \StyleCI\StyleCI\Models\Analysis $analysis
  *
  * @return void
  */
 protected function runAnalysis(Analysis $analysis)
 {
     $report = $this->builder->analyze($analysis->repo->name, $analysis->repo->id, $analysis->commit, $analysis->branch, $analysis->pr, $analysis->repo->default_branch);
     if ($report->binary()) {
         $analysis->status = Analysis::CONFIG_ISSUES;
         $analysis->error = 'We cannot analyze binary files. The finder config needs adjusting to exclude such files.';
         return;
     }
     if ($errors = $report->errors()) {
         $analysis->status = Analysis::INTERNAL;
         $analysis->errors = $errors;
         return;
     }
     $successful = $report->successful();
     $lints = $report->lints();
     if ($successful && $lints) {
         $analysis->status = Analysis::SYNTAX_ISSUES;
         $analysis->errors = $lints;
     } elseif (!$successful && $lints) {
         $analysis->status = Analysis::BOTH_ISSUES;
         $analysis->errors = $lints;
     } elseif ($successful && !$lints) {
         $analysis->status = Analysis::PASSED;
     } else {
         $analysis->status = Analysis::CS_ISSUES;
     }
     if (!$successful) {
         $this->storage->put($analysis->id, $report->diff());
     }
 }