Create an Extension that suggests reviewers
Review Request #10248 — Created Oct. 19, 2018 and discarded
This extension would suggest reviewers for a current review request. It keeps
track of all previous reviews and suggests a username of someone who has
reviewed something similar in the past. The extension uses an ML model called
kNN algorithm by calculating the distance between past reviews and the current
review request.
- Ran the ML model with past reviews and compared suggested reviewers with the
actual person that reviewed the change set usingSuggestReviewersAccuracy.py
. - Settled on the combination of weights, and which variables to include in the
distance calculation based on the combination that gave the highest accuracy score.
Please take a look atallresults.csv
.
Description | From | Last Updated |
---|---|---|
Hey Praise! I looked at your code, and even after reading the Review Board documentation for extensions I still don't … |
skaefer143 | |
E401 multiple imports on one line |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W601 .has_key() is deprecated, use 'in' |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
E501 line too long (88 > 79 characters) |
reviewbot | |
E501 line too long (94 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
F401 'django.contrib.auth.models.User' imported but unused |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
F401 'django.db.models' imported but unused |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
F401 'django.contrib.auth.models.User' imported but unused |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
F401 'django.db.models' imported but unused |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E501 line too long (102 > 79 characters) |
reviewbot | |
E501 line too long (117 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E265 block comment should start with '# ' |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
F401 'django.contrib.auth.models.User' imported but unused |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
F401 'django.db.models' imported but unused |
reviewbot | |
E402 module level import not at top of file |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
F401 'reviewboard.urls.diffviewer_url_names' imported but unused |
reviewbot | |
E303 too many blank lines (3) |
reviewbot | |
E302 expected 2 blank lines, found 0 |
reviewbot | |
E501 line too long (95 > 79 characters) |
reviewbot | |
E501 line too long (110 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (81 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
F401 'reviewboard.urls.diffviewer_url_names' imported but unused |
reviewbot | |
E303 too many blank lines (3) |
reviewbot | |
E302 expected 2 blank lines, found 0 |
reviewbot | |
E501 line too long (95 > 79 characters) |
reviewbot | |
E501 line too long (110 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (92 > 79 characters) |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F401 'django.contrib.auth.models.User' imported but unused |
reviewbot | |
F401 'djblets.util.fields.JSONField' imported but unused |
reviewbot | |
F401 'reviewboard.reviews.models.ReviewRequest' imported but unused |
reviewbot | |
F401 'reviewboard.reviews.models.Review' imported but unused |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F401 'django.http.HttpResponse' imported but unused |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
E301 expected 1 blank line, found 0 |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E225 missing whitespace around operator |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
F821 undefined name 'models' |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E501 line too long (110 > 79 characters) |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E703 statement ends with a semicolon |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
F401 'django.http.HttpResponse' imported but unused |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E501 line too long (110 > 79 characters) |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E501 line too long (93 > 79 characters) |
reviewbot | |
E501 line too long (93 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
E501 line too long (89 > 79 characters) |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
F821 undefined name 'calculateDistanceBetweenTwoDirs' |
reviewbot | |
E501 line too long (89 > 79 characters) |
reviewbot | |
E501 line too long (83 > 79 characters) |
reviewbot | |
F821 undefined name 'dist' |
reviewbot | |
F821 undefined name 'operator' |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E114 indentation is not a multiple of four (comment) |
reviewbot | |
E116 unexpected indentation (comment) |
reviewbot | |
F841 local variable 'review_request' is assigned to but never used |
reviewbot | |
E501 line too long (81 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
E501 line too long (91 > 79 characters) |
reviewbot | |
E501 line too long (87 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (87 > 79 characters) |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E501 line too long (110 > 79 characters) |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E501 line too long (93 > 79 characters) |
reviewbot | |
E501 line too long (93 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E501 line too long (89 > 79 characters) |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
F821 undefined name 'calculateDistanceBetweenTwoDirs' |
reviewbot | |
E501 line too long (89 > 79 characters) |
reviewbot | |
E501 line too long (83 > 79 characters) |
reviewbot | |
F821 undefined name 'dist' |
reviewbot | |
F821 undefined name 'operator' |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
E501 line too long (91 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (87 > 79 characters) |
reviewbot | |
E501 line too long (87 > 79 characters) |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E501 line too long (108 > 79 characters) |
reviewbot | |
F401 'suggest_reviewers_extension.models.SuggestReviewers' imported but unused |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E501 line too long (110 > 79 characters) |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
F841 local variable 'filename1' is assigned to but never used |
reviewbot | |
F841 local variable 'filename2' is assigned to but never used |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (87 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (99 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (94 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E114 indentation is not a multiple of four (comment) |
reviewbot | |
E111 indentation is not a multiple of four |
reviewbot | |
E114 indentation is not a multiple of four (comment) |
reviewbot | |
E111 indentation is not a multiple of four |
reviewbot | |
E111 indentation is not a multiple of four |
reviewbot | |
E114 indentation is not a multiple of four (comment) |
reviewbot | |
E114 indentation is not a multiple of four (comment) |
reviewbot | |
E111 indentation is not a multiple of four |
reviewbot | |
E251 unexpected spaces around keyword / parameter equals |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E251 unexpected spaces around keyword / parameter equals |
reviewbot | |
E501 line too long (85 > 79 characters) |
reviewbot | |
F401 'suggest_reviewers_extension.models.SuggestReviewers' imported but unused |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E501 line too long (104 > 79 characters) |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E501 line too long (84 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (81 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E113 unexpected indentation |
reviewbot | |
E501 line too long (90 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E113 unexpected indentation |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
E501 line too long (90 > 79 characters) |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E501 line too long (99 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E113 unexpected indentation |
reviewbot | |
E501 line too long (82 > 79 characters) |
reviewbot | |
E271 multiple spaces after keyword |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E114 indentation is not a multiple of four (comment) |
reviewbot | |
E116 unexpected indentation (comment) |
reviewbot | |
E501 line too long (99 > 79 characters) |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
E401 multiple imports on one line |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E225 missing whitespace around operator |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E113 unexpected indentation |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E501 line too long (84 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
F841 local variable 'filename1' is assigned to but never used |
reviewbot | |
F841 local variable 'filename2' is assigned to but never used |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E501 line too long (87 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (99 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (94 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
E301 expected 1 blank line, found 0 |
reviewbot | |
E501 line too long (85 > 79 characters) |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E271 multiple spaces after keyword |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (3) |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W503 line break before binary operator |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F401 'django.http.HttpResponse' imported but unused |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E271 multiple spaces after keyword |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (3) |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W503 line break before binary operator |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F401 'django.http.HttpResponse' imported but unused |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E271 multiple spaces after keyword |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (3) |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W503 line break before binary operator |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F401 'django.http.HttpResponse' imported but unused |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
You should add a trailing comma over here |
bolariinwa | |
E127 continuation line over-indented for visual indent |
reviewbot | |
F401 'pdb' imported but unused |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
You're creating a "Model" here, but that's not really what you want. Django models correspond to database tables, and you're … |
david | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (2) |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
You have some trailing whitespace over here |
bolariinwa | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E271 multiple spaces after keyword |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E303 too many blank lines (3) |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
W503 line break before binary operator |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F401 'django.http.HttpResponse' imported but unused |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
F401 'suggest_reviewers_extension.SuggestReviewersResource.suggestReviewersResource' imported but unused |
reviewbot | |
F401 'djblets.webapi.resources.unregister_resource_for_model' imported but unused |
reviewbot | |
F401 'djblets.webapi.resources.register_resource_for_model' imported but unused |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
E231 missing whitespace after ',' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E231 missing whitespace after ',' |
reviewbot | |
Is it worth using a Counter here instead of a Dict? I don't know if this will actually boost performance … |
gojeffcho | |
I know that this is WIP so a lot of these comments could be self-notes so you can keep track … |
gojeffcho | |
Ditto some of your variable naming, some of them don't conform to standards and others are unclear/unspecific like download_dir being … |
gojeffcho | |
This seems to be hardcoded into a lot of these files - could it be centralized somewhere and retrieved instead … |
gojeffcho | |
I believe this docstring should end with a period, and the linebreaks look a bit off to me in the … |
gojeffcho | |
Is it worth checking that the files exist before this? |
gojeffcho | |
It seems like Counter could work well here as well. |
gojeffcho | |
Does an if not review_request.get_draft() fail here sometimes even when it's not None? |
gojeffcho | |
E902 IndentationError: unindent does not match any outer indentation level |
reviewbot | |
E127 continuation line over-indented for visual indent |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E999 IndentationError: unindent does not match any outer indentation level |
reviewbot | |
F401 'djblets.util.fields.JSONField' imported but unused |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W391 blank line at end of file |
reviewbot | |
Col: 9 'self' is defined but never used. |
reviewbot | |
E231 missing whitespace after ',' |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E304 blank lines found after function decorator |
reviewbot | |
E999 IndentationError: unexpected unindent |
reviewbot | |
E902 TokenError: EOF in multi-line statement |
reviewbot | |
E123 closing bracket does not match indentation of opening bracket's line |
reviewbot | |
E999 SyntaxError: invalid syntax |
reviewbot | |
E131 continuation line unaligned for hanging indent |
reviewbot | |
E123 closing bracket does not match indentation of opening bracket's line |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E113 unexpected indentation |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E999 IndentationError: unexpected unindent |
reviewbot | |
E304 blank lines found after function decorator |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
F401 'reviewboard.extensions.base.JSExtension' imported but unused |
reviewbot | |
F821 undefined name 'SuggestReviewersJSExtension' |
reviewbot | |
F821 undefined name 'SuggestReviewersJSExtension' |
reviewbot | |
E128 continuation line under-indented for visual indent |
reviewbot | |
F821 undefined name 'suggestReviewersResource' |
reviewbot | |
E999 IndentationError: unexpected unindent |
reviewbot | |
F821 undefined name 'suggest_reviewers_resource' |
reviewbot | |
E999 IndentationError: unexpected unindent |
reviewbot | |
Trailing whitespace here |
bolariinwa | |
W291 trailing whitespace |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E301 expected 1 blank line, found 0 |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E301 expected 1 blank line, found 0 |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E301 expected 1 blank line, found 0 |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
This file is not a model. I'm confused as to its location (and why an extension would have RB models?) |
brennie | |
This is a class, which isn't intended to contain arbitrary code. In Java, everything must be contained in a class, … |
brennie | |
This file is not a model. I'm confused as to its location (and why an extension would have RB models?) |
brennie | |
This file is not a model. I'm confused as to its location (and why an extension would have RB models?) |
brennie | |
Docstrings should be of the format: """Single line summary. Multi-line description. """ |
brennie | |
F401 'djblets.webapi.decorators.webapi_request_fields' imported but unused |
reviewbot | |
F401 'reviewboard.webapi.decorators.webapi_login_required' imported but unused |
reviewbot | |
F401 'reviewboard.webapi.decorators.webapi_check_local_site' imported but unused |
reviewbot | |
F401 'reviewboard.webapi.resources.resources' imported but unused |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E305 expected 2 blank lines after class or function definition, found 1 |
reviewbot | |
F401 'reviewboard.extensions.base.JSExtension' imported but unused |
reviewbot | |
E501 line too long (80 > 79 characters) |
reviewbot | |
E203 whitespace before ':' |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
W292 no newline at end of file |
reviewbot | |
Col: 53 Expected '!==' and instead saw '!='. |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E225 missing whitespace around operator |
reviewbot | |
E122 continuation line missing indentation or outdented |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
F401 'pdb' imported but unused |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E231 missing whitespace after ':' |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
W291 trailing whitespace |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E226 missing whitespace around arithmetic operator |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
E201 whitespace after '(' |
reviewbot | |
E225 missing whitespace around operator |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E302 expected 2 blank lines, found 1 |
reviewbot | |
W293 blank line contains whitespace |
reviewbot | |
E231 missing whitespace after ',' |
reviewbot | |
E305 expected 2 blank lines after class or function definition, found 1 |
reviewbot | |
W292 no newline at end of file |
reviewbot |
- Commit:
-
646a68b3cca782a80d2dc13a941ac8921cd9fa3efd379e16b3b56e5dc5088dd192f110aba3eee90b
- Diff:
-
Revision 2 (+214)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 43 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Commit:
-
fd379e16b3b56e5dc5088dd192f110aba3eee90ba0396bb3287bfd442926fa5a6b56fe947f21b669
- Diff:
-
Revision 3 (+258)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 46 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Commit:
-
a0396bb3287bfd442926fa5a6b56fe947f21b669a8b29915c1a37b5742a0520bdbca79959e5d413e
- Diff:
-
Revision 4 (+249)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
a8b29915c1a37b5742a0520bdbca79959e5d413ec807e0fd31ae4632a6139f4c6ba1108f6d41f5a4
- Diff:
-
Revision 5 (+255)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
c807e0fd31ae4632a6139f4c6ba1108f6d41f5a44957f09647642ea073b3b6f26adc625a88f7f877
- Diff:
-
Revision 6 (+259)
- Commit:
-
4957f09647642ea073b3b6f26adc625a88f7f87712baebd145259fdec3520f93b9bb58b61b260d5a
- Diff:
-
Revision 7 (+261)
- Commit:
-
12baebd145259fdec3520f93b9bb58b61b260d5af2dcb03cc987a49e48293eeba678b05e061d2430
- Diff:
-
Revision 8 (+258)
Checks run (1 failed, 1 succeeded)
flake8
- Description:
-
~ When a user makes a review request, if they enable this extension then they can
~ get a suggestion about a reviewer that would be the best to review the submitted ~ code, given the files that this user would like to review. ~ Summary of what this extension would do: When a user makes a review request,
~ if they enable this extension then they can get a suggestion about a reviewer ~ that would be the best to review the submitted code, given the files that + this user would like to review. + + What I have done:
+ Created an extension folder called suggested_reviewers_extension
and added an+ extension.py
that defines the basis of the extension. The file also creates+ a JSExtension
subclass that stores the right reviewer(s) in a variable that was+ calculated from the models.py
file so that thetemplate.HTML
can be dynamic+ depending on who is meant to review the request. + + I also created a
template.HTML
class that displays the suggested reviewer or on+ default, displays that there is no one to suggest. Also, the template gets the DOM + element of the review-request-details and attaches the suggested_review div to that + element. + + I'm working on the
models.py
file now to correctly return the right reviewer based+ on the right weights and right variables.
- Commit:
-
f2dcb03cc987a49e48293eeba678b05e061d2430f409b45081803b7825903af0930da5f9e261de50
- Diff:
-
Revision 9 (+357)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 36 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Commit:
-
f409b45081803b7825903af0930da5f9e261de50b478a7e96d6671a30339967df067ed346cbd962d
- Diff:
-
Revision 10 (+440)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 58 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Summary:
-
[WIP]: Create a Suggestive reviewers Extension[WIP]: Create an Extension that suggests reviewers
- Commit:
-
b478a7e96d6671a30339967df067ed346cbd962dad6cf8b15d96ba4b7cfec679342716996b883148
- Diff:
-
Revision 11 (+475)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 89 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Commit:
-
ad6cf8b15d96ba4b7cfec679342716996b883148c080c8705c2967ed17f564e4f4b76fe369eebbd1
- Diff:
-
Revision 12 (+479)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 78 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Hey Praise! I looked at your code, and even after reading the Review Board documentation for extensions I still don't really know a lot about extensions. So I don't really have anything specific to comment on, but I did want to ask a question.
Have you put thought into when the extension is going to run? Like, if it runs when you click on a Review Request, or something else? That could be a good place to start. Then you'd have some code that actually triggers your extension, and you can utilize the methods you wrote that calculate a suggested reviewer. Just some thoughts!
- Commit:
-
c080c8705c2967ed17f564e4f4b76fe369eebbd1c8fdc405ea92939982249924393bea428e32dfed
- Diff:
-
Revision 13 (+484)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 58 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Commit:
-
c8fdc405ea92939982249924393bea428e32dfeddb9a0baf05d98392f766aaa1f1e585fdda646f6a
- Diff:
-
Revision 14 (+485)
Checks run (1 failed, 1 succeeded)
flake8
-
Warning: Showing 30 of 40 failures.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Commit:
-
db9a0baf05d98392f766aaa1f1e585fdda646f6a9caffb57738749a0acfb14ac779098365d278dd7
- Diff:
-
Revision 15 (+495)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
9caffb57738749a0acfb14ac779098365d278dd741fe94633963717c17734aa5905232d811855b08
- Diff:
-
Revision 16 (+495)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
41fe94633963717c17734aa5905232d811855b08ff7ae01b3ae853588a0fd51df1d7e0dba043141a
- Diff:
-
Revision 17 (+508)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
ff7ae01b3ae853588a0fd51df1d7e0dba043141a4befb7633f32fb472c6f0f0b7cc0a2820cbdd865
- Diff:
-
Revision 18 (+499)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
4befb7633f32fb472c6f0f0b7cc0a2820cbdd865012e3e30b530a22c1bfd6afeccc7b0ce5b63087a
- Diff:
-
Revision 19 (+404)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
012e3e30b530a22c1bfd6afeccc7b0ce5b63087ac3035ca899ddb27e3e4536ac3b05f6a7583bdf69
- Diff:
-
Revision 20 (+406)
- Commit:
-
c3035ca899ddb27e3e4536ac3b05f6a7583bdf697aea0bc11a5f1fe2840c5b95f80ced28bce545c2
- Diff:
-
Revision 21 (+406)
Checks run (2 succeeded)
-
-
Is it worth using a Counter here instead of a Dict? I don't know if this will actually boost performance in a noticeable way, but I know I've used it in the past for this kind of purpose. It can turn your algorithm below for key reviewer into a single method call as well.
-
I know that this is WIP so a lot of these comments could be self-notes so you can keep track of what you're doing, but I definitely think the majority of your comments could be done away with when it comes out of WIP.
-
Ditto some of your variable naming, some of them don't conform to standards and others are unclear/unspecific like
download_dir
being a filename, not a directory. -
This seems to be hardcoded into a lot of these files - could it be centralized somewhere and retrieved instead of defined in each one?
-
I believe this docstring should end with a period, and the linebreaks look a bit off to me in the diff.
-
-
-
- Commit:
-
7aea0bc11a5f1fe2840c5b95f80ced28bce545c26162e080ec777502b7ba603bc736873795bf89de
- Diff:
-
Revision 22 (+552)
Checks run (2 failed)
flake8
JSHint
- Commit:
-
6162e080ec777502b7ba603bc736873795bf89de231ad794a18f234122916664eded04a9d5a672dc
- Diff:
-
Revision 23 (+553)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
231ad794a18f234122916664eded04a9d5a672dc881857ff3572ef7b19212f556e3a7a15377e9a67
- Diff:
-
Revision 24 (+552)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
881857ff3572ef7b19212f556e3a7a15377e9a6755d854a027b65e44e400fed7a282dd57722dd96b
- Diff:
-
Revision 25 (+547)
- Commit:
-
55d854a027b65e44e400fed7a282dd57722dd96b9bdc21ddf271eb17879915446b7fbdcba8a54d9b
- Diff:
-
Revision 26 (+547)
- Commit:
-
9bdc21ddf271eb17879915446b7fbdcba8a54d9ba1d7fd15b184bd78fbb13a3667cc4629cf6ce3a2
- Diff:
-
Revision 27 (+537)
Checks run (2 succeeded)
- Commit:
-
a1d7fd15b184bd78fbb13a3667cc4629cf6ce3a2e28e6cc3d68767eec6e8a48b6025ae8db379659f
- Diff:
-
Revision 28 (+745)
- Commit:
-
e28e6cc3d68767eec6e8a48b6025ae8db379659fdb5450449cb53c8def8d7a3bf2bd9f788970362c
- Diff:
-
Revision 29 (+633)
- Commit:
-
db5450449cb53c8def8d7a3bf2bd9f788970362cd732defd09868d36e1371ce7ebf4572dc9b022ee
- Diff:
-
Revision 30 (+431)
- Commit:
-
d732defd09868d36e1371ce7ebf4572dc9b022eedb8c1a5e0869e7b87f50c3828fb9a0b1ce729d2b
- Diff:
-
Revision 31 (+233)
Checks run (2 succeeded)
-
-
This file is not a model. I'm confused as to its location (and why an extension would have RB models?)
-
This is a class, which isn't intended to contain arbitrary code.
In Java, everything must be contained in a class, but that is not the case for python. If you are intending for this to be a script you can remove the
class
and keep everything at top-level. -
This file is not a model. I'm confused as to its location (and why an extension would have RB models?)
-
This file is not a model. I'm confused as to its location (and why an extension would have RB models?)
-
- Commit:
-
db8c1a5e0869e7b87f50c3828fb9a0b1ce729d2bbd9416670ba61d7e2ffe3a74e10ee820db6d6331
- Diff:
-
Revision 32 (+433)
Checks run (2 succeeded)
- Commit:
-
bd9416670ba61d7e2ffe3a74e10ee820db6d63312665e9b4de3b8de8ef34444ac21f518e1f09b865
- Diff:
-
Revision 33 (+489)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
2665e9b4de3b8de8ef34444ac21f518e1f09b8653766656869d6df48f40ec467080b84c4ded97619
- Diff:
-
Revision 34 (+376)
- Commit:
-
3766656869d6df48f40ec467080b84c4ded97619e7de5d5de14a5af637fba1932845b14e28c2e30c
- Diff:
-
Revision 35 (+378)
Checks run (2 succeeded)
- Commit:
-
e7de5d5de14a5af637fba1932845b14e28c2e30c8e088bf50b0b46403ce63aa4ad461bedef602ddd
- Diff:
-
Revision 36 (+365)
- Commit:
-
8e088bf50b0b46403ce63aa4ad461bedef602dddfdfa9b2042f2acd3012d4c1b4837645e05bfe9d5
- Diff:
-
Revision 37 (+365)
Checks run (2 succeeded)
- Commit:
-
fdfa9b2042f2acd3012d4c1b4837645e05bfe9d515c175847366238bce3d5de904e867b85c01f557
- Diff:
-
Revision 38 (+11585)
Checks run (1 failed, 1 succeeded)
flake8
- Commit:
-
15c175847366238bce3d5de904e867b85c01f557557e4b39d0566922f7927e2000cb480297d8a975
- Diff:
-
Revision 39 (+11593)
Checks run (2 succeeded)
- Summary:
-
[WIP]: Create an Extension that suggests reviewersCreate an Extension that suggests reviewers
- Description:
-
~ Summary of what this extension would do: When a user makes a review request,
~ if they enable this extension then they can get a suggestion about a reviewer ~ that would be the best to review the submitted code, given the files that ~ this user would like to review. ~ ~ This extension would suggest reviewers for a current review request. It keeps
~ track of all previous reviews and suggests a username of someone who has ~ reviewed something similar in the past. The extension uses an ML model called ~ kNN algorithm by calculating the distance between past reviews and the current ~ review request. - What I have done:
- Created an extension folder called suggested_reviewers_extension
and added an- extension.py
that defines the basis of the extension. The file also creates- a JSExtension
subclass that stores the right reviewer(s) in a variable that was- calculated from the models.py
file so that thetemplate.HTML
can be dynamic- depending on who is meant to review the request. - - I also created a
template.HTML
class that displays the suggested reviewer or on- default, displays that there is no one to suggest. Also, the template gets the DOM - element of the review-request-details and attaches the suggested_review div to that - element. - - I'm working on the
models.py
file now to correctly return the right reviewer based- on the right weights and right variables. - Testing Done:
-
~ - Played around with Django models to extract reviewers
~ - and the reviews that were made
~ - Ran the ML model with past reviews and compared suggested reviewers with the
actual person that reviewed the change set usingSuggestReviewersAccuracy.py
.
~ - Settled on the combination of weights, and which variables to include in the
distance calculation based on the combination that gave the highest accuracy score.
Please take a look atallresults.csv
.
- - Created an extension folder and implemented the extension.py
- - Added views.py and models.py files
- Commit:
-
557e4b39d0566922f7927e2000cb480297d8a975778a475fe9987e2df52ac10b875797c53a9acaa3
- Diff:
-
Revision 40 (+11579)
Checks run (2 succeeded)
- Commit:
-
778a475fe9987e2df52ac10b875797c53a9acaa36f2aa0cc6395e589b8a95cd4202ec40e461800e0
- Diff:
-
Revision 41 (+11579)