Chromium Code Reviews| Index: appengine/findit/crash/changelist_classifier.py |
| diff --git a/appengine/findit/crash/changelist_classifier.py b/appengine/findit/crash/changelist_classifier.py |
| index 47bf9062eba1a9c7ee6a76c6c8c2fdfd31328a51..15d31b32350ff29a61cc6f2a4762931e6ef7728c 100644 |
| --- a/appengine/findit/crash/changelist_classifier.py |
| +++ b/appengine/findit/crash/changelist_classifier.py |
| @@ -8,7 +8,8 @@ from collections import namedtuple |
| from common import chrome_dependency_fetcher |
| from crash import crash_util |
| -from crash.results import MatchResults |
| +from crash.suspect import Suspect |
| +from crash.suspect import Suspects |
|
stgao
2016/12/19 18:30:30
These two are confusing. What's the difference?
wrengr
2016/12/19 18:33:42
One is an individual suspected CL (plus meta data)
|
| from crash.scorers.aggregated_scorer import AggregatedScorer |
| from crash.scorers.min_distance import MinDistance |
| from crash.scorers.top_frame_index import TopFrameIndex |
| @@ -26,9 +27,9 @@ class ChangelistClassifier(namedtuple('ChangelistClassifier', |
| """Args: |
| repository (Repository): the Git repository for getting CLs to classify. |
| top_n_frames (int): how many frames of each callstack to look at. |
| - top_n_results (int): maximum number of results to return. |
| + top_n_results (int): maximum number of suspects to return. |
| confidence_threshold (float): In [0,1], above which we only return |
| - the first result. |
| + the first suspect. |
| """ |
| return super(cls, ChangelistClassifier).__new__(cls, |
| repository, top_n_frames, top_n_results, confidence_threshold) |
| @@ -47,7 +48,7 @@ class ChangelistClassifier(namedtuple('ChangelistClassifier', |
| report (CrashReport): the report to be analyzed. |
| Returns: |
| - List of Results, sorted by confidence from highest to lowest. |
| + List of ``Suspect``s, sorted by confidence from highest to lowest. |
| """ |
| if not report.regression_range: |
| logging.warning('ChangelistClassifier.__call__: Missing regression range ' |
| @@ -96,28 +97,27 @@ class ChangelistClassifier(namedtuple('ChangelistClassifier', |
| # TODO: argument order is inconsistent from others. Repository should |
| # be last argument. |
| - results = FindMatchResults(dep_to_file_to_changelogs, |
| - dep_to_file_to_stack_infos, |
| - stack_deps, self.repository, ignore_cls) |
| - if not results: |
| + suspects = FindSuspects(dep_to_file_to_changelogs, |
| + dep_to_file_to_stack_infos, |
| + stack_deps, self.repository, ignore_cls) |
| + if not suspects: |
| return [] |
| - # TODO(wrengr): we should be able to do this map/filter/sort in one pass. |
| - # Set result.confidence, result.reasons and result.changed_files. |
| + # Set confidence, reasons, and changed_files. |
| aggregated_scorer = AggregatedScorer([TopFrameIndex(), MinDistance()]) |
| - map(aggregated_scorer.Score, results) |
| + map(aggregated_scorer.Score, suspects) |
| # Filter all the 0 confidence results. |
| - results = filter(lambda r: r.confidence != 0, results) |
| - if not results: |
| + suspects = filter(lambda suspect: suspect.confidence != 0, suspects) |
| + if not suspects: |
| return [] |
| - sorted_results = sorted(results, key=lambda r: -r.confidence) |
| + suspects.sort(key=lambda suspect: -suspect.confidence) |
| - max_results = (1 if sorted_results[0].confidence > self.confidence_threshold |
| + max_results = (1 if suspects[0].confidence > self.confidence_threshold |
| else self.top_n_results) |
| - return sorted_results[:max_results] |
| + return suspects[:max_results] |
| def GetDepsInCrashStack(crash_stack, crash_deps): |
| @@ -264,11 +264,11 @@ def GetStackInfosForFilesGroupedByDeps(stacktrace, stack_deps): |
| # TODO(katesonia): Remove the repository argument after refatoring cl committed. |
| -def FindMatchResults(dep_to_file_to_changelogs, |
| - dep_to_file_to_stack_infos, |
| - stack_deps, repository, |
| - ignore_cls=None): |
| - """Finds results by matching stacktrace and changelogs in regression range. |
| +def FindSuspects(dep_to_file_to_changelogs, |
| + dep_to_file_to_stack_infos, |
| + stack_deps, repository, |
| + ignore_cls=None): |
| + """Finds suspects by matching stacktrace and changelogs in regression range. |
| This method only applies to those crashes with regression range. |
| @@ -284,9 +284,9 @@ def FindMatchResults(dep_to_file_to_changelogs, |
| ignore_cls (set): Set of reverted revisions. |
| Returns: |
| - A list of MatchResult instances with confidence and reason unset. |
| + A list of ``Suspect`` instances with confidence and reason unset. |
| """ |
| - match_results = MatchResults(ignore_cls) |
| + suspects = Suspects(ignore_cls) |
| for dep, file_to_stack_infos in dep_to_file_to_stack_infos.iteritems(): |
| file_to_changelogs = dep_to_file_to_changelogs[dep] |
| @@ -300,9 +300,9 @@ def FindMatchResults(dep_to_file_to_changelogs, |
| blame = repository.GetBlame(touched_file_path, |
| stack_deps[dep].revision) |
| - # Generate/update each result(changelog) in changelogs, blame is used |
| + # Generate/update each suspect(changelog) in changelogs, blame is used |
| # to calculate distance between touched lines and crashed lines in file. |
| - match_results.GenerateMatchResults( |
| + suspects.GenerateSuspects( |
| touched_file_path, dep, stack_infos, changelogs, blame) |
| - return match_results.values() |
| + return suspects.values() |