Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(478)

Unified Diff: appengine/findit/crash/findit_for_chromecrash.py

Issue 2649503002: [Predator] Switch from scorer-based classifier to loglinear classifier. (Closed)
Patch Set: Fix nits. Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | appengine/findit/crash/occurrence.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: appengine/findit/crash/findit_for_chromecrash.py
diff --git a/appengine/findit/crash/findit_for_chromecrash.py b/appengine/findit/crash/findit_for_chromecrash.py
index dcb2d3c57f66a6587dfd3fdb607d2be89dc16b52..f97ffec9aa7168eb25aef967f39a5be3a1f173dd 100644
--- a/appengine/findit/crash/findit_for_chromecrash.py
+++ b/appengine/findit/crash/findit_for_chromecrash.py
@@ -8,11 +8,16 @@ from google.appengine.ext import ndb
from common import appengine_util
from crash import detect_regression_range
-from crash.changelist_classifier import ChangelistClassifier
from crash.chromecrash_parser import ChromeCrashParser
from crash.component import Component
from crash.component_classifier import ComponentClassifier
from crash.findit import Findit
+from crash.loglinear.changelist_classifier import LogLinearChangelistClassifier
+from crash.loglinear.changelist_features.touch_crashed_file_meta import (
+ TouchCrashedFileMetaFeature)
+from crash.loglinear.feature import WrapperMetaFeature
+from crash.loglinear.weight import MetaWeight
+from crash.loglinear.weight import Weight
from crash.predator import Predator
from crash.project import Project
from crash.project_classifier import ProjectClassifier
@@ -34,6 +39,7 @@ _FRACAS_FEEDBACK_URL_TEMPLATE = 'https://%s/crash/fracas-result-feedback?key=%s'
# from historical_metadata (when historical_metadata is provided and
# regression_range is not).
+
class FinditForChromeCrash(Findit):
"""Find culprits for crash reports from the Chrome Crash server."""
@@ -52,29 +58,40 @@ class FinditForChromeCrash(Findit):
# entirely, by passing the relevant data as arguments to this constructor.
def __init__(self, get_repository):
super(FinditForChromeCrash, self).__init__(get_repository)
- project_classifier_config = CrashConfig.Get().project_classifier
- component_classifier_config = CrashConfig.Get().component_classifier
- self._stacktrace_parser = ChromeCrashParser()
+ # TODO(http://crbug.com/687670): Move meta weight initial value to config.
+ meta_weight = MetaWeight({
+ 'TouchCrashedFileMeta': MetaWeight({
+ 'MinDistance': Weight(1.),
+ 'TopFrameIndex': Weight(1.),
+ 'TouchCrashedFile': Weight(1.),
+ })
+ })
+ meta_feature = WrapperMetaFeature(
+ [TouchCrashedFileMetaFeature(get_repository)])
+ project_classifier_config = CrashConfig.Get().project_classifier
projects = [Project(name, path_regexs, function_regexs, host_directories)
for name, path_regexs, function_regexs, host_directories
in project_classifier_config['project_path_function_hosts']]
+ component_classifier_config = CrashConfig.Get().component_classifier
components = [Component(component_name, path_regex, function_regex)
for path_regex, function_regex, component_name
- in component_classifier_config['path_function_component']],
- # The top_n is the number of components we should return as
- # components suggestion results.
- # TODO(http://crbug.com/679964) Deprecate the scorer-based changelist
- # classifier and use loglinear model instead.
+ in component_classifier_config['path_function_component']]
+ # The top_n is the number of frames we want to check to get component or
+ # project classifications.
self._predator = Predator(
- cl_classifier = ChangelistClassifier(get_repository),
+ cl_classifier = LogLinearChangelistClassifier(get_repository,
+ meta_feature,
+ meta_weight),
component_classifier = ComponentClassifier(
components, component_classifier_config['top_n']),
project_classifier = ProjectClassifier(
projects, project_classifier_config['top_n'],
project_classifier_config['non_chromium_project_rank_priority']))
+ self._stacktrace_parser = ChromeCrashParser()
+
def _InitializeAnalysis(self, model, crash_data):
super(FinditForChromeCrash, self)._InitializeAnalysis(model, crash_data)
# TODO(wrengr): see Note#1
« no previous file with comments | « no previous file | appengine/findit/crash/occurrence.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698