Skip to content

Add Python Quality Inspector Tool#17

Open
muumuu8181 wants to merge 1 commit intomainfrom
add-quality-inspector-17947283072458146150
Open

Add Python Quality Inspector Tool#17
muumuu8181 wants to merge 1 commit intomainfrom
add-quality-inspector-17947283072458146150

Conversation

@muumuu8181
Copy link
Owner

Added a new tool devtools/inspector.py that performs comprehensive quality checks on Python code. It includes:

  1. Internal AST-based checks for docstrings, function complexity (nesting), argument counts, and dangerous calls.
  2. Integration with external tools: Flake8 (style), Mypy (types), Bandit (security), Radon (complexity).
  3. A unified report format categorized by tool and severity.

PR created automatically by Jules for task 17947283072458146150 started by @muumuu8181

This tool combines internal AST analysis with external linters (flake8, mypy, bandit, radon) to provide a holistic code quality report.
- devtools/inspector.py: Main script.
- devtools/requirements_qa.txt: Dependencies.

Co-authored-by: muumuu8181 <87556753+muumuu8181@users.noreply.github.com>
@google-labs-jules
Copy link
Contributor

👋 Jules, reporting for duty! I'm here to lend a hand with this pull request.

When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down.

I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job!

For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with @jules. You can find this option in the Pull Request section of your global Jules UI settings. You can always switch back!

New to Jules? Learn more at jules.google/docs.


For security, I will only act on instructions from the user who triggered this task.

Copy link

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: adb159708d

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +75 to +78
if isinstance(item, (ast.For, ast.While, ast.If, ast.With, ast.Try)):
self.check_nesting(item, current_depth + 1)
else:
self.check_nesting(item, current_depth)

Choose a reason for hiding this comment

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

P1 Badge Exclude inner function bodies from outer nesting checks

The nesting pass walks every AST child and increments depth through control-flow nodes even when those nodes are inside a nested def, so an inner function’s depth is reported against the outer function as well; because visit_FunctionDef also runs check_nesting on the inner function, this creates duplicate and incorrect warnings (e.g., an outer function with no deep blocks is flagged when only its inner function is deeply nested).

Useful? React with 👍 / 👎.

self.issues = []
self.current_function = None

def visit_FunctionDef(self, node):

Choose a reason for hiding this comment

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

P2 Badge Apply function checks to async defs

Only visit_FunctionDef performs the docstring/argument-count/nesting validations, so async def functions bypass all of those checks entirely and can be reported as clean even when they violate the same rules; adding equivalent handling for ast.AsyncFunctionDef is needed for accurate Python coverage.

Useful? React with 👍 / 👎.

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.

1 participant