Skip to content

Commit

Permalink
Enhance exception handling when a Semgrep rule fails to run (#69)
Browse files Browse the repository at this point in the history
  • Loading branch information
d-niu authored Nov 22, 2022
1 parent 44a32b4 commit a4a3d9e
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions guarddog/analyzer/analyzer.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ def analyze_metadata(self, info, rules=None) -> dict[str]:
issues += 1
results[rule] = message
except Exception as e:
errors[rule] = str(e)
errors[rule] = f"failed to run rule {rule}: {str(e)}"

return {"results": results, "errors": errors, "issues": issues}

Expand All @@ -156,11 +156,14 @@ def analyze_sourcecode(self, path, rules=None) -> tuple[dict, int]:

if rules is None:
# No rule specified, run all rules
response = invoke_semgrep(Path(self.sourcecode_path), [targetpath], exclude=self.exclude, no_git_ignore=True)
rule_results = self._format_semgrep_response(response, targetpath=targetpath)
issues += len(rule_results)

results = results | rule_results
try:
response = invoke_semgrep(Path(self.sourcecode_path), [targetpath], exclude=self.exclude, no_git_ignore=True)
rule_results = self._format_semgrep_response(response, targetpath=targetpath)
issues += len(rule_results)

results = results | rule_results
except Exception as e:
errors["rules-all"] = f"failed to run rule: {str(e)}"
else:
for rule in rules:
try:
Expand All @@ -175,7 +178,7 @@ def analyze_sourcecode(self, path, rules=None) -> tuple[dict, int]:

results = results | rule_results
except Exception as e:
errors[rule] = str(e)
errors[rule] = f"failed to run rule {rule}: {str(e)}"

return {"results": results, "errors": errors, "issues": issues}

Expand Down

0 comments on commit a4a3d9e

Please sign in to comment.