| 1 | # Report-only complexity monitor for internal/agent production code. |
| 2 | # Uses funlen + cyclop with generous thresholds so existing code does not |
| 3 | # generate a flood of noise. issues-exit-code is forced to 0 by the CI step so |
| 4 | # this never blocks merges while we establish a baseline and track trend. |
| 5 | version: "2" |
| 6 | |
| 7 | run: |
| 8 | tests: false |
| 9 | |
| 10 | linters: |
| 11 | default: none |
| 12 | enable: |
| 13 | - funlen |
| 14 | - cyclop |
| 15 | settings: |
| 16 | funlen: |
| 17 | # Deliberately above a hard 50-line rule: length alone is not the |
| 18 | # acceptance gate. This surfaces only the remaining large hotspots after |
| 19 | # the Run/executeOne extraction so trend can be tracked. |
| 20 | lines: 120 |
| 21 | statements: 80 |
| 22 | ignore-comments: true |
| 23 | cyclop: |
| 24 | max-complexity: 30 |
| 25 | package-average: 0 |
| 26 | skip-tests: true |
| 27 | |
| 28 | issues: |
| 29 | max-issues-per-linter: 0 |
| 30 | max-same-issues: 0 |
| 31 | # Report mode: never fail the job. Baseline/trend is the gate, not a hard cut. |
| 32 | # The CI step also passes --issues-exit-code=0 for older golangci-lint builds. |
| 33 | uniq-by-line: false |
| 34 | |
| 35 | output: |
| 36 | formats: |
| 37 | text: |
| 38 | path: stdout |
| 39 | print-linter-name: true |
| 40 | print-issued-lines: true |
| 41 |