generic_multiline
- Value
trueorfalse- 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: falseblocks.txt
beginx endCommand 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.