python.flask.maintainability.deprecated.deprecated-apis.flask-deprecated-apis

profile photo of semgrepsemgrep
Author
7,173
Download Count*

deprecated Flask API

Run Locally

Run in CI

Defintion

rules:
  - id: flask-deprecated-apis
    message: deprecated Flask API
    languages:
      - python
    severity: WARNING
    pattern-either:
      - pattern: |
          $F = Flask(...)
          ...
          $F.open_session(...)
      - pattern: |
          $F = Flask(...)
          ...
          $F.save_session(...)
      - pattern: |
          $F = Flask(...)
          ...
          $F.make_null_session(...)
      - pattern: |
          $F = Flask(...)
          ...
          $F.init_jinja_globals(...)
      - pattern: |
          $F = Flask(...)
          ...
          $F.request_globals_class(...)
      - pattern: |
          $F = Flask(...)
          ...
          $F.static_path(...)
      - pattern: app.open_session(...)
      - pattern: app.save_session(...)
      - pattern: app.make_null_session(...)
      - pattern: app.init_jinja_globals(...)
      - pattern: app.request_globals_class(...)
      - pattern: app.static_path(...)
      - pattern: app.config.from_json(...)
      - pattern: flask.json_available
      - pattern: flask.request.module
      - pattern: flask.testing.make_test_environ_builder(...)
    metadata:
      category: maintainability
      technology:
        - flask
      license: Commons Clause License Condition v1.0[LGPL-2.1-only]

Examples

deprecated-apis.py

from flask import Flask, json_available, request, testing

# ruleid: flask-deprecated-apis
app = Flask(__name__)

# ruleid: flask-deprecated-apis
if json_available:
    pass

# ruleid: flask-deprecated-apis
blueprint = request.module

# ruleid: flask-deprecated-apis
builder = testing.make_test_environ_builder(app)

# ruleid: flask-deprecated-apis
app.open_session(...)

# ruleid: flask-deprecated-apis
app.save_session(...)

# ruleid: flask-deprecated-apis
app.make_null_session(...)

# ruleid: flask-deprecated-apis
app.init_jinja_globals(...)

# ruleid: flask-deprecated-apis
app.request_globals_class(...)

# ruleid: flask-deprecated-apis
app.static_path(...)

# ruleid: flask-deprecated-apis
app.config.from_json(...)


@app.route("/foo")
def foo():
    pass


if request.method == "POST":
    pass

app.config["BAR"] = "BAZ"
app.register_blueprint(blueprint=object())