Skip to content

Commit 83a2daf

Browse files
committed
improving exeptions
1 parent 5247662 commit 83a2daf

File tree

2 files changed

+51
-47
lines changed

2 files changed

+51
-47
lines changed

gitevo/application.py

Lines changed: 47 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -63,35 +63,6 @@ def __init__(self,
6363
self.registered_metrics: list[MetricInfo] = []
6464
self._analyzed_commits: list[str] = []
6565

66-
# def add_language(self, extension: str, tree_sitter_language: object):
67-
# miner = GenericMiner
68-
# miner.extension = extension
69-
# miner.tree_sitter_language = tree_sitter_language
70-
# self._repo.add_miner(miner)
71-
72-
def run(self) -> GitEvoResult | list[GitEvoResult]:
73-
print(f'Running GitEvo...')
74-
results = []
75-
for git_repo in self.git_repos:
76-
print('Processing repository:', git_repo)
77-
result = self._compute_metrics(git_repo)
78-
results.append(result)
79-
self._export_html(result)
80-
self._export_csv(result)
81-
return results
82-
83-
def _export_html(self, result: GitEvoResult):
84-
if not self.export_html_report:
85-
return
86-
path = HtmlReport(result).export_html()
87-
print(self._write_msg('HTML', path))
88-
89-
def _export_csv(self, result: GitEvoResult):
90-
if not self.export_csv_report:
91-
return
92-
path = TableReport(result).export_csv()
93-
print(self._write_msg('CSV', path))
94-
9566
# metric decorator
9667
def metric(self, name: str = None,
9768
*,
@@ -115,31 +86,55 @@ def decorator(func):
11586
return func
11687

11788
return decorator
89+
90+
# def add_language(self, extension: str, tree_sitter_language: object):
91+
# miner = GenericMiner
92+
# miner.extension = extension
93+
# miner.tree_sitter_language = tree_sitter_language
94+
# self._repo.add_miner(miner)
11895

119-
def _compute_metrics(self, git_repository: str) -> GitEvoResult:
96+
def run(self) -> GitEvoResult | list[GitEvoResult]:
97+
print(f'Running GitEvo...')
98+
results = []
99+
for git_repo in self.git_repos:
100+
print('Processing repository:', git_repo)
101+
try:
102+
result = self._process_repository(git_repo)
103+
results.append(result)
104+
except (FileExtensionNotFound, BadReturnType, BadDateUnit, BadYearRange, BadLOCAggregate, BadVersionChart) as e:
105+
raise
106+
except Exception as e:
107+
print(f'Error processing {git_repo}: {e}')
108+
continue
109+
return results
110+
111+
def _process_repository(self, git_repo: str) -> GitEvoResult:
112+
result = self._compute_metrics(git_repo)
113+
self._export_html(result)
114+
self._export_csv(result)
115+
return result
116+
117+
def _compute_metrics(self, git_repo: str) -> GitEvoResult:
120118

121-
tree_miner_repo = TreeMinerRepo(git_repository)
119+
mine_repo = TreeMinerRepo(git_repo)
122120
gitevo_result = GitEvoResult(self.report_title, self.report_filename, self.date_unit, self.registered_metrics)
123121

124-
# Sanity checks on registered_metrics
125122
for metric_info in self.registered_metrics:
126-
123+
# Sanity checks on registered_metrics
127124
self._check_registered_metrics(metric_info)
128-
129125
if metric_info.file_extension is None:
130126
metric_info.file_extension = self.global_file_extension
131-
132127
# Real names of the categorical metrics are known only at runtime, thus, now register None
133128
gitevo_result.add_metric_group(metric_info.name_or_none_for_categorical, metric_info.group)
134-
135-
project_name = None
136-
project_commits = set()
137129

138130
project_result = ProjectResult()
139131
gitevo_result.project_result = project_result
140132

141-
for commit in tree_miner_repo.commits:
142-
133+
project_name = None
134+
project_commits = set()
135+
136+
for commit in mine_repo.commits:
137+
143138
if project_name is None:
144139
project_name = commit.project_name
145140
project_result.name = project_name
@@ -261,6 +256,18 @@ def _write_msg(self, format: str, path: str) -> str:
261256
def _all_file_extensions(self) -> set[str]:
262257
return set([metric_info.file_extension for metric_info in self.registered_metrics])
263258

259+
def _export_html(self, result: GitEvoResult):
260+
if not self.export_html_report:
261+
return
262+
path = HtmlReport(result).export_html()
263+
print(self._write_msg('HTML', path))
264+
265+
def _export_csv(self, result: GitEvoResult):
266+
if not self.export_csv_report:
267+
return
268+
path = TableReport(result).export_csv()
269+
print(self._write_msg('CSV', path))
270+
264271
class ParsedFile:
265272

266273
def __init__(self, name: str, path: str, nodes: list[Node], loc: int):

gitevo/exceptions.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
class FileExtensionNotFound(Exception):
1+
class BadGitRepo(Exception):
22
pass
33

4-
class BadAggregate(Exception):
4+
class FileExtensionNotFound(Exception):
55
pass
66

77
class BadReturnType(Exception):
@@ -10,14 +10,11 @@ class BadReturnType(Exception):
1010
class BadDateUnit(Exception):
1111
pass
1212

13-
class BadLOCAggregate(Exception):
13+
class BadYearRange(Exception):
1414
pass
1515

16-
class BadGitRepo(Exception):
16+
class BadLOCAggregate(Exception):
1717
pass
1818

1919
class BadVersionChart(Exception):
20-
pass
21-
22-
class BadYearRange(Exception):
2320
pass

0 commit comments

Comments
 (0)