dgryski.semgrep-go.ctx-time.ctx-done-and-timers

profile photo of dgryskidgryski
Author
unknown
Download Count*
License

ctx.Done() and time.After/time.NewTicker

Run Locally

Run in CI

Defintion

rules:
  - id: ctx-done-and-timers
    patterns:
      - pattern-either:
          - pattern: |
              select {
              case <-ctx.Done():
                  $BODY
              case <-time.After(...):
                  $BODY
              }
          - pattern: |
              $T := time.NewTicker(...)
              ...
              select {
              case <-ctx.Done():
                  $BODY
              case <-$T.C:
                  $BODY
              }
    message: ctx.Done() and time.After/time.NewTicker
    languages:
      - go
    severity: ERROR
    metadata:
      license: MIT