rules:
  - id: use-jsonify
    patterns:
      - pattern: $JSONDUMPS
      - pattern-either:
          - pattern-inside: |
              return json.dumps($...VAR)
          - pattern-inside: |
              $DATA = json.dumps($...VAR)
              ...
              return $DATA
      - pattern-inside: |
          @app.route(...)
          def $X():
            ...
      - metavariable-pattern:
          metavariable: $JSONDUMPS
          pattern: json.dumps($...VAR)
      - focus-metavariable: $JSONDUMPS
    fix: |
      flask.jsonify($...VAR)
    message: >-
      flask.jsonify() is a Flask helper method which handles the correct 
      settings for returning JSON from Flask routes
    languages: [python]
    severity: ERROR
    metadata:
      category: best-practice
      technology:
        - flask
      references:
        - https://flask.palletsprojects.com/en/2.2.x/api/#flask.json.jsonify
