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

feat(rules): implement flake8-bandit S201 (flask_debug_true) #7503

Merged

Conversation

mkniewallner
Copy link
Contributor

Part of #1646.

Summary

Implement S201 (flask_debug_true) rule from bandit.

I am fairly new to Rust and Ruff's codebase, so there might be better ways to implement the rule or write the code.

Test Plan

Snapshot test from https://github.com/PyCQA/bandit/blob/1.7.5/examples/flask_debug.py, with a few additions in the "unrelated" part to test a bit more cases.

@codspeed-hq
Copy link

codspeed-hq bot commented Sep 19, 2023

CodSpeed Performance Report

Merging #7503 will improve performances by 2.29%

Comparing mkniewallner:feat/add-flake8-bandit-S201 (7ed0354) with main (40f6456)

Summary

⚡ 1 improvements
✅ 24 untouched benchmarks

Benchmarks breakdown

Benchmark main mkniewallner:feat/add-flake8-bandit-S201 Change
linter/all-rules[numpy/ctypeslib.py] 35 ms 34.3 ms +2.29%

@mkniewallner mkniewallner marked this pull request as ready for review September 19, 2023 00:17
@github-actions
Copy link
Contributor

github-actions bot commented Sep 19, 2023

PR Check Results

Ecosystem

✅ ecosystem check detected no changes.

Copy link
Member

@charliermarsh charliermarsh left a comment

Choose a reason for hiding this comment

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

Looks great! Just some minor stuff.

@@ -573,6 +573,7 @@ pub fn code_to_rule(linter: Linter, code: &str) -> Option<(RuleGroup, Rule)> {
(Flake8Bandit, "110") => (RuleGroup::Unspecified, rules::flake8_bandit::rules::TryExceptPass),
(Flake8Bandit, "112") => (RuleGroup::Unspecified, rules::flake8_bandit::rules::TryExceptContinue),
(Flake8Bandit, "113") => (RuleGroup::Unspecified, rules::flake8_bandit::rules::RequestWithoutTimeout),
(Flake8Bandit, "201") => (RuleGroup::Unspecified, rules::flake8_bandit::rules::FlaskDebugTrue),
Copy link
Member

Choose a reason for hiding this comment

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

We're now in the habit of adding new rules under RuleGroup::Preview -- mind changing it here?

/// Checks for uses of `debug=True` in Flask.
///
/// ## Why is this bad?
/// Enabling debug mode shows an interactive debugger in the browser if an error occurs, and allows
Copy link
Member

Choose a reason for hiding this comment

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

It's annoying, but we manually format these to fit 80 characters, since they sometimes get printed to the terminal.

return;
}

if let Some(debug_argument) = call.arguments.find_keyword("debug") {
Copy link
Member

Choose a reason for hiding this comment

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

You can reduce one level of indentation by doing:

let Some(debug_argument) = call.arguments.find_keyword("debug") else {
    return;
};

...

return;
}

if let Expr::Name(name) = value.as_ref() {
Copy link
Member

Choose a reason for hiding this comment

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

Same here: can use let-else to reduce indentation.

def main():
raise

#bad
Copy link
Member

Choose a reason for hiding this comment

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

For whatever reason, the comment we typically use here is # Errors and then # OK (instead of #okay).

@charliermarsh charliermarsh added the rule Implementing or modifying a lint rule label Sep 19, 2023
Copy link
Member

@charliermarsh charliermarsh left a comment

Choose a reason for hiding this comment

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

Thanks!

@charliermarsh charliermarsh enabled auto-merge (squash) September 19, 2023 00:39
@charliermarsh charliermarsh merged commit c6ba7df into astral-sh:main Sep 19, 2023
14 checks passed
@mkniewallner mkniewallner deleted the feat/add-flake8-bandit-S201 branch September 19, 2023 00:53
renovate bot added a commit to allenporter/flux-local that referenced this pull request Sep 24, 2023
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ruff](https://docs.astral.sh/ruff)
([source](https://togithub.com/astral-sh/ruff),
[changelog](https://togithub.com/astral-sh/ruff/releases)) | `==0.0.290`
-> `==0.0.291` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/ruff/0.0.291?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/ruff/0.0.291?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/ruff/0.0.290/0.0.291?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/ruff/0.0.290/0.0.291?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>astral-sh/ruff (ruff)</summary>

###
[`v0.0.291`](https://togithub.com/astral-sh/ruff/releases/tag/v0.0.291)

[Compare
Source](https://togithub.com/astral-sh/ruff/compare/v0.0.290...v0.0.291)

<!-- Release notes generated using configuration in .github/release.yml
at v0.0.291 -->

#### What's Changed

##### Deprecations

**The `format` command-line argument and configuration option has been
renamed to `output-format`.** While Ruff will continue to respect
`format` when passed as a command-line argument or configuration option,
this backwards-compatible support will be dropped in a future release.
See:
[astral-sh/ruff#7514.

##### Rules

- \[`flake8-bandit`] Implement `S201`: `flask-debug-true` by
[@&#8203;mkniewallner](https://togithub.com/mkniewallner) in
[astral-sh/ruff#7503
- \[`flake8-bandit`] Implement `S507`: `ssh_no_host_key_verification` by
[@&#8203;mkniewallner](https://togithub.com/mkniewallner) in
[astral-sh/ruff#7528
- \[`flake8-logging`] Implement `LOG002`: `invalid-get-logger-argument`
by [@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[astral-sh/ruff#7399
- \[`flake8-logging`] Implement `LOG007`: `exception-without-exc-info`
by [@&#8203;qdegraaf](https://togithub.com/qdegraaf) in
[astral-sh/ruff#7410
- \[`refurb`] Implement `FURB140`: `reimplemented-starmap` by
[@&#8203;SavchenkoValeriy](https://togithub.com/SavchenkoValeriy) in
[astral-sh/ruff#7253
- \[`refurb`] Implement `FURB148`: `unnecessary-enumerate` by
[@&#8203;tjkuson](https://togithub.com/tjkuson) in
[astral-sh/ruff#7454
- \[`ruff`] Detect `asyncio.get_running_loop` calls in RUF006 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7562

##### Settings

- Show `--no-X` variants in CLI help by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7504
- Rename `format` option to `output-format` by
[@&#8203;MichaReiser](https://togithub.com/MichaReiser) in
[astral-sh/ruff#7514
- Enable tab completion for `ruff rule` by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7560

##### Bug Fixes

- Add padding to prevent some autofix errors by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7461
- Remove parentheses when rewriting assert calls to statements by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7464
- Avoid flagging starred elements in C402 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7466
- Extend `bad-dunder-method-name` to permit `attrs` dunders by
[@&#8203;tjkuson](https://togithub.com/tjkuson) in
[astral-sh/ruff#7472
- Avoid N802 violations for
[@&#8203;overload](https://togithub.com/overload) methods by
[@&#8203;JonathanPlasse](https://togithub.com/JonathanPlasse) in
[astral-sh/ruff#7498
- Avoid flagging starred expressions in UP007 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7505
- Ensure that LOG007 only triggers on `.exception()` calls by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7524
- Use strict sorted and union for NoQA mapping insertion by
[@&#8203;dhruvmanila](https://togithub.com/dhruvmanila) in
[astral-sh/ruff#7531
- Avoid inserting imports directly after continuation by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7553
- Add padding in `PERF102` fixes by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7554
- Avoid invalid fix for parenthesized values in F601 by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7559
- Treat `os.error` as an `OSError` alias by
[@&#8203;charliermarsh](https://togithub.com/charliermarsh) in
[astral-sh/ruff#7582
- Extend `bad-dunder-method-name` to permit `__html__` by
[@&#8203;jaap3](https://togithub.com/jaap3) in
[astral-sh/ruff#7492
- Fix stylist indentation with a formfeed by
[@&#8203;konstin](https://togithub.com/konstin) in
[astral-sh/ruff#7489

#### New Contributors

- [@&#8203;MicaelJarniac](https://togithub.com/MicaelJarniac) made their
first contribution in
[astral-sh/ruff#5498
- [@&#8203;maheshsaripalli9](https://togithub.com/maheshsaripalli9) made
their first contribution in
[astral-sh/ruff#7552
- [@&#8203;T-256](https://togithub.com/T-256) made their first
contribution in
[astral-sh/ruff#7585

**Full Changelog**:
astral-sh/ruff@v0.0.290...v0.0.291

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/allenporter/flux-local).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi45Ny4xIiwidXBkYXRlZEluVmVyIjoiMzYuOTcuMSIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rule Implementing or modifying a lint rule
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants