Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix part of issue #8423 Lint concatenation checker #19908

Open
wants to merge 112 commits into
base: develop
Choose a base branch
from

Conversation

Helper2020
Copy link
Contributor

@Helper2020 Helper2020 commented Mar 8, 2024

Overview

  1. This PR fixes or fixes part of Implement new linter checks #8423].
  2. This PR adds Add a lint check to prevent the usage of string concatenation and promote string interpolation.

Essential Checklist

  • The PR title starts with "Fix #bugnum: " or "Fix part of #bugnum: ...", followed by a short, clear summary of the changes.
  • I have followed the instructions for making a code change.
  • I have assigned the correct reviewers to this PR (or will leave a comment with the phrase "@{{reviewer_username}} PTAL" if I don't have permissions to assign reviewers directly).
  • The linter/Karma presubmit checks pass on my local machine, and my PR follows the coding style guide).
  • "Allow edits from maintainers" is checked. (See here for instructions on how to enable it.)

@Helper2020 Helper2020 requested a review from a team as a code owner March 8, 2024 22:27
Copy link

oppiabot bot commented Mar 8, 2024

Hi @Helper2020, can you complete the following:

  1. The body of this PR is missing the overview section, please update it to include the overview.
  2. The body of this PR is missing the proof that changes are correct section, please update it to include the section.
    Thanks!

Copy link

oppiabot bot commented Mar 8, 2024

Assigning @vojtechjelinek for the first pass review of this PR. Thanks!

@Helper2020
Copy link
Contributor Author

@seanlip PTAL, @U8NWXD PTAL

@oppiabot oppiabot bot assigned seanlip and U8NWXD and unassigned Helper2020 Mar 8, 2024
Copy link

oppiabot bot commented Mar 8, 2024

Unassigning @Helper2020 since a re-review was requested. @Helper2020, please make sure you have addressed all review comments. Thanks!

Copy link
Member

@seanlip seanlip left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Helper2020! Could you please fix the lint checks that are failing on CI? Thanks.

@seanlip seanlip assigned Helper2020 and unassigned seanlip Mar 9, 2024
Copy link
Member

@vojtechjelinek vojtechjelinek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks! Left a few comments.

Comment on lines 2954 to 2956
if (isinstance(left_inferred.value, str) and
isinstance(right_inferred.value, str)):
self.add_message('prefer-string-interpolation', node=node)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (isinstance(left_inferred.value, str) and
isinstance(right_inferred.value, str)):
self.add_message('prefer-string-interpolation', node=node)
if (
isinstance(left_inferred.value, str) and
isinstance(right_inferred.value, str)
):
self.add_message('prefer-string-interpolation', node=node)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done.

scripts/linters/pylint_extensions_test.py Show resolved Hide resolved
Copy link

oppiabot bot commented Mar 10, 2024

Unassigning @vojtechjelinek since the review is done.

@U8NWXD
Copy link
Member

U8NWXD commented Mar 10, 2024

@Helper2020 please correct the issues flagged by Oppiabot in #19908 (comment):

Hi @Helper2020, can you complete the following:

  1. The body of this PR is missing the overview section, please update it to include the overview.
  2. The body of this PR is missing the proof that changes are correct section, please update it to include the section.
    Thanks!

I'm de-assigning myself for now until these issues and CI checks are fixed

@U8NWXD U8NWXD removed their assignment Mar 10, 2024
@Helper2020
Copy link
Contributor Author

@vojtechjelinek I'm not sure how I can handle errors from .infer() without try-except blocks. Any suggestions?

@vojtechjelinek
Copy link
Member

@vojtechjelinek I'm not sure how I can handle errors from .infer() without try-except blocks. Any suggestions?

Why can't you use try-except?

@Helper2020
Copy link
Contributor Author

@vojtechjelinek I'm not sure how I can handle errors from .infer() without try-except blocks. Any suggestions?

Why can't you use try-except?

I can, just according to the coding style guide, raising exceptions are rarely used.

@seanlip
Copy link
Member

seanlip commented May 19, 2024

@Helper2020 How long more do you need?

@Helper2020
Copy link
Contributor Author

@Helper2020 How long more do you need?
@seanlip
I am pretty much done. Although im not sure about the backend test that failed. I don't think it was caused on my end. Can you rerun?

@StephenYu2018
Copy link
Contributor

@Helper2020 Okay I tried re-running the failed jobs.

@Helper2020
Copy link
Contributor Author

@StephenYu2018 PTAL, @vojtechjelinek PTAL, @seanlip PTAL

Copy link

oppiabot bot commented May 21, 2024

Unassigning @Helper2020 since a re-review was requested. @Helper2020, please make sure you have addressed all review comments. Thanks!

@Helper2020
Copy link
Contributor Author

@StephenYu2018 PTAL, @vojtechjelinek PTAL, @seanlip PTAL

Copy link
Contributor

@StephenYu2018 StephenYu2018 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have no new changes to request. Please address my remaining reviewer comments, as I've left some new comments under those threads. Once that's done, I'll approve these changes.

Copy link
Member

@seanlip seanlip left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @Helper2020. Looks great! I just left a few notes on my codeowner files, PTAL.

score_category: str = ('%s%s%s' % (
suggestion_models.SCORE_TYPE_TRANSLATION,
suggestion_models.SCORE_CATEGORY_DELIMITER, 'English')
)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deindent by 4 (to match opening scope).

suggestion_models.SCORE_TYPE_TRANSLATION +
suggestion_models.SCORE_CATEGORY_DELIMITER + 'English')
'%s%s%s' % (
suggestion_models.SCORE_TYPE_TRANSLATION,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Indent this line and the next by 4 from the previous line, since the ( introduces a new indentation scope.

@@ -410,7 +410,7 @@ def _get_trimmed_error_output(html_lint_output: str) -> str:

for line in html_output_lines:
trimmed_error_messages.append(line)
return '\n'.join(trimmed_error_messages) + '\n'
return '\n%s%s' % (''.join(trimmed_error_messages), '\n')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not just put the last \n in the main string literal?

@@ -526,7 +526,7 @@ def _get_trimmed_error_output(eslint_output: str) -> str:
else:
error_message = line
trimmed_error_messages.append(error_message)
return '\n'.join(trimmed_error_messages) + '\n'
return '\n%s%s' % (trimmed_error_messages, '\n')
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto, put the last \n in the main string literal

@@ -2919,6 +2919,55 @@ def visit_importfrom(self, node: astroid.nodes.ImportFrom) -> None:
self.add_message('disallowed-text-import', node=node)


# TODO(#16567): Here we use MyPy ignore because of the incomplete typing of
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Strike the first "of"

# (Class cannot subclass 'BaseChecker' (has type 'Any')),
# we added an ignore here.
class PreventStringConcatenationChecker(checkers.BaseChecker): # type: ignore[misc]
"""Checks for string concactenation and encourage string interpolation."""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

encourage --> encourages

Args: node: astroid.BinOp The binary operation node to check.
"""

if isinstance(node, astroid.BinOp) and node.op == '+':
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not done? (I don't see the changes in the code.)

'-linux-x64.tar.gz',
'https://nodejs.org/dist/v%s/node-v%s%s' % (
common.NODE_VERSION, common.NODE_VERSION,
'-linux-x64.tar.gz'),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why not just add this to the main string, since it is hardcoded?

@seanlip seanlip assigned Helper2020 and unassigned seanlip May 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
PR: Affects datastore layer Labels to indicate a PR that changes the datastore layer.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants