reference Rule options

generic_multiline

Value
true or false
Default
true
See also
generic_engine

With generic_engine: aliengrep, an ellipsis ... or a metavariable ellipsis $...X may span lines. With generic_multiline: false, they stay within one line.

In this mode, the long ellipsis ...., and $....X, may still cross a line break: begin....end matches begin followed by x end on the next line.

The option has no effect with the default engine, spacegrep.

Examples

Three kinds of ellipsis on one block

blocks.yaml
rules:  - id: dots-default    pattern: begin ... end    message: block    languages: [generic]    severity: INFO    options:      generic_engine: aliengrep  - id: dots    pattern: begin ... end    message: block    languages: [generic]    severity: INFO    options:      generic_engine: aliengrep      generic_multiline: false  - id: long-dots    pattern: begin....end    message: block    languages: [generic]    severity: INFO    options:      generic_engine: aliengrep      generic_multiline: false
blocks.txt
beginx end
Command and result
$ opengrep scan --config blocks.yaml --json blocks.txt 2>/dev/null | jq .
{
  "version": "X.Y.Z",
  "results": [
    {
      "check_id": "dots-default",
      "path": "blocks.txt",
      "start": {
        "line": 1,
        "col": 1,
        "offset": 0
      },
      "end": {
        "line": 2,
        "col": 6,
        "offset": 11
      },
      "extra": {
        "metavars": {},
        "message": "block",
        "metadata": {},
        "severity": "INFO",
        "fingerprint": "0da745f4f1aba903ca3655fb40bac322a3dcc6d8f50c64e0e8ec04ec35dbe7a3b5388ad4344cce39a65c8a509294d32e497d0bdfde9f0359219a4ec80f2d0992_0",
        "lines": "begin\nx end",
        "is_ignored": false,
        "validation_state": "NO_VALIDATOR",
        "engine_kind": "Opengrep"
      }
    },
    {
      "check_id": "long-dots",
      "path": "blocks.txt",
      "start": {
        "line": 1,
        "col": 1,
        "offset": 0
      },
      "end": {
        "line": 2,
        "col": 6,
        "offset": 11
      },
      "extra": {
        "metavars": {},
        "message": "block",
        "metadata": {},
        "severity": "INFO",
        "fingerprint": "6c956abaf56277bb20ed677d411a86395b530598d0722c4888a812eee5d20041719483cb30a7be16637c54ad066a0f22f21f5d4720a3d32a7ec86a6ed7c1bece_0",
        "lines": "begin\nx end",
        "is_ignored": false,
        "validation_state": "NO_VALIDATOR",
        "engine_kind": "Opengrep"
      }
    }
  ],
  "errors": [],
  "paths": {
    "scanned": [
      "blocks.txt"
    ]
  },
  "interfile_languages_used": [],
  "skipped_rules": []
}

dots-default finds the block. With generic_multiline: false, dots does not, and long-dots does.