Skip to content

add lint for registry control set regex that is not complete #2643

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

Conversation

mike-hunhoff
Copy link
Collaborator

Checklist

  • No CHANGELOG update needed
  • No new tests needed
  • No documentation update needed

@mike-hunhoff mike-hunhoff requested a review from a team March 24, 2025 16:56
Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Hello @mike-hunhoff, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

Summary of Changes

This pull request introduces a new lint check to ensure that regular expressions used for matching registry control sets are complete. Specifically, it checks if the regex includes both ControlSet\d{3} and CurrentControlSet to cover both direct and indirect references. The goal is to prevent incomplete matches when searching for registry keys related to control sets.

Highlights

  • New Lint Check: A new lint check, FeatureRegexRegistryControlSetMatchIncomplete, is added to detect incomplete regex patterns for registry control sets.
  • Regex Completeness: The lint check verifies that regex patterns include both ControlSet\d{3} and CurrentControlSet to ensure comprehensive matching.
  • Integration: The new lint check is integrated into the existing linting process by adding it to the list of checks in lint_meta.

Changelog

  • scripts/lint.py
    • Added FeatureRegexRegistryControlSetMatchIncomplete lint class to check for incomplete registry control set regex patterns (lines 724-744).
    • Integrated the new lint check into the lint_meta function (line 1009).
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in issue comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.


Did you know?

Regular expressions are used in many programming languages and tools, including Python, JavaScript, Perl, and grep. Each implementation may have slight variations in syntax and features.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@github-actions github-actions bot left a comment

Choose a reason for hiding this comment

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

Please add bug fixes, new features, breaking changes and anything else you think is worthwhile mentioning to the master (unreleased) section of CHANGELOG.md. If no CHANGELOG update is needed add the following to the PR description: [x] No CHANGELOG update needed

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request adds a new lint check to ensure that registry control set regexes are complete. The new lint identifies incomplete regexes and recommends using a more comprehensive pattern. The changes look good overall, but I have a few suggestions to improve the code's clarity and efficiency.

Summary of Findings

  • Redundant return False statement: The return False statement inside the check_features method is redundant because it will never be reached due to the return True statement within the if block. Removing it will simplify the code and improve readability.
  • Inconsistent use of in operator: The code uses both "string" in pat and "string" not in pat to check for the presence of substrings. For consistency and readability, consider using the in operator for both checks.

Merge Readiness

The pull request introduces a valuable lint check for registry control set regexes. While the changes are generally well-implemented, addressing the redundant return False statement and ensuring consistent use of the in operator would enhance the code's clarity and efficiency. I recommend addressing these points before merging. I am unable to directly approve this pull request, and recommend that others review and approve this code before merging.

@github-actions github-actions bot dismissed their stale review March 24, 2025 17:02

CHANGELOG updated or no update needed, thanks! 😄

Copy link
Collaborator

@williballenthin williballenthin left a comment

Choose a reason for hiding this comment

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

nice!

@mike-hunhoff mike-hunhoff merged commit 7407cb3 into master Mar 24, 2025
27 checks passed
@mike-hunhoff mike-hunhoff deleted the fix/lints/feature-regex-registry-controlset-match-incomplete branch March 24, 2025 18:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants