@fabriziosalmi/slopless 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fabriziosalmi/slopless",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -22,7 +22,7 @@
22
22
  "verify:bundle": "node scripts/verify-bundle.js",
23
23
  "verify:action": "bash scripts/run-action-locally.sh . 'src/**/*.ts'",
24
24
  "release:prep": "npm run docs:gen && npm run build && npm test && npm run verify:bundle",
25
- "version": "npm run build && git add dist"
25
+ "version": "node scripts/check-changelog.js && npm run docs:gen && npm run build && git add dist docs README.md"
26
26
  },
27
27
  "keywords": [
28
28
  "linter",
@@ -42,14 +42,14 @@
42
42
  },
43
43
  "type": "commonjs",
44
44
  "devDependencies": {
45
- "@types/glob": "^8.1.0",
45
+ "@types/glob": "^9.0.0",
46
46
  "@types/js-yaml": "^4.0.9",
47
- "@types/node": "^25.3.0",
47
+ "@types/node": "^26.4.0",
48
48
  "@vitest/coverage-v8": "^4.0.18",
49
- "commander": "^14.0.3",
49
+ "commander": "^15.0.0",
50
50
  "glob": "^13.0.6",
51
51
  "ignore": "^7.0.5",
52
- "js-yaml": "^4.1.1",
52
+ "js-yaml": "^5.4.1",
53
53
  "minimatch": "^10.2.6",
54
54
  "ts-node": "^10.9.2",
55
55
  "tsup": "^8.5.1",
@@ -10,6 +10,9 @@ match:
10
10
  - sh
11
11
  - py
12
12
  - js
13
+ # The same decision as the paths below, for languages that keep their
14
+ # tests in the file they test.
15
+ exclude_test_code: true
13
16
  exclude_files:
14
17
  - '**/test/**'
15
18
  - '**/tests/**'
@@ -11,6 +11,9 @@ match:
11
11
  - js
12
12
  - ts
13
13
  - py
14
+ # The same decision as the paths below, for languages that keep their
15
+ # tests in the file they test.
16
+ exclude_test_code: true
14
17
  exclude_files:
15
18
  - '**/test/**'
16
19
  - '**/tests/**'
@@ -13,6 +13,9 @@ match:
13
13
  - ts
14
14
  - py
15
15
  - sh
16
+ # The same decision as the paths below, for languages that keep their
17
+ # tests in the file they test.
18
+ exclude_test_code: true
16
19
  exclude_files:
17
20
  - '**/test/**'
18
21
  - '**/tests/**'
@@ -13,6 +13,9 @@ match:
13
13
  - ts
14
14
  - py
15
15
  - html
16
+ # The same decision as the paths below, for languages that keep their
17
+ # tests in the file they test.
18
+ exclude_test_code: true
16
19
  exclude_files:
17
20
  - '**/test/**'
18
21
  - '**/tests/**'
@@ -9,6 +9,7 @@ match:
9
9
  flags: m
10
10
  multiline: true
11
11
  scan: all
12
+ exclude_doc_comments: true
12
13
  file_types:
13
14
  - js
14
15
  - ts
@@ -17,10 +18,37 @@ message: >-
17
18
  Too many consecutive comment lines at line {line}. Code should be self-documenting.
18
19
  tests:
19
20
  fire:
20
- - code: |
21
- // filler comment line
22
- repeat: 12
21
+ # Below the first line of code, so it is commentary rather than a header.
22
+ - |
23
+ const answer = 42;
24
+ // filler comment line
25
+ // filler comment line
26
+ // filler comment line
27
+ // filler comment line
28
+ // filler comment line
29
+ // filler comment line
30
+ // filler comment line
31
+ // filler comment line
32
+ // filler comment line
33
+ // filler comment line
34
+ // filler comment line
35
+ // filler comment line
23
36
  quiet:
24
37
  - |
25
38
  // one explanatory comment
26
39
  const answer = 42;
40
+ # A banner at the top of a file explains what the file is. Counting it as
41
+ # excess commentary reported 79 module headers in one project.
42
+ - |
43
+ // ─────────────────────────────
44
+ // Wasm Core Bridge
45
+ //
46
+ // Lazy-loads the Rust module.
47
+ // All functions go through this singleton.
48
+ //
49
+ // Usage:
50
+ // import { core } from './bridge';
51
+ // const c = await core();
52
+ //
53
+ // ─────────────────────────────
54
+ import { core } from './bridge';
@@ -16,6 +16,9 @@ match:
16
16
  - py
17
17
  - go
18
18
  - rs
19
+ # The same decision as the paths below, for languages that keep their
20
+ # tests in the file they test.
21
+ exclude_test_code: true
19
22
  exclude_files:
20
23
  - '**/test/**'
21
24
  - '**/tests/**'
@@ -15,6 +15,15 @@ match:
15
15
  - ts
16
16
  - py
17
17
  - sh
18
+ - go
19
+ - rs
20
+ - java
21
+ - c
22
+ - cpp
23
+ - cs
24
+ - kt
25
+ - swift
26
+ - rb
18
27
  supersedes:
19
28
  - VBC-907
20
29
  - VBC-150
@@ -18,6 +18,13 @@ match:
18
18
  - c
19
19
  - cpp
20
20
  - md
21
+ - go
22
+ - rs
23
+ - java
24
+ - cs
25
+ - kt
26
+ - swift
27
+ - rb
21
28
  message: >-
22
29
  Passive-aggressive or helpless comment '{match}' detected at line {line}. Replace with a
23
30
  technical explanation of the actual constraint or a link to the relevant issue tracker ticket.
@@ -6,6 +6,9 @@ tags:
6
6
  - clean-code
7
7
  match:
8
8
  regex: /(?:[^/\n\\]|\\.){30,}/[dgimsuvy]*
9
+ # Regular expression literals and nothing else. Reading strings found the
10
+ # slashes in a translation file; reading code found the ones in a division.
11
+ scan: regex
9
12
  file_types:
10
13
  - js
11
14
  - ts
@@ -10,26 +10,44 @@ match:
10
10
  (?:^[ \t]*(?:#|//)(?=[^\nA-Za-z0-9]*$)[^\n]*[-=*#_|/\\+~^]{6,}[^\n]*$\n){3,}
11
11
  flags: m
12
12
  multiline: true
13
+ scan: comments
13
14
  file_types:
14
15
  - js
15
16
  - ts
16
17
  - py
17
18
  - sh
19
+ - go
20
+ - rs
21
+ - java
22
+ - c
23
+ - cpp
24
+ - cs
25
+ - kt
26
+ - swift
27
+ - rb
18
28
  message: >-
19
29
  Block of decoration at line {line}: three or more comment lines that are shape and nothing
20
30
  else. A rule around a section heading is punctuation and is not reported; a banner is furniture
21
31
  that has to be maintained.
22
32
  tests:
23
33
  fire:
34
+ # A `#` banner needs a file where `#` opens a comment.
35
+ - file: a.py
36
+ code: |
37
+ # ####################
38
+ # ####################
39
+ # ####################
24
40
  - |
25
- # ####################
26
- # ####################
27
- # ####################
41
+ // ####################
42
+ // ####################
43
+ // ####################
28
44
  quiet:
29
- - |
30
- # --------------------------------
31
- # Shared fixtures from public data
32
- # --------------------------------
33
- - |
34
- # ------------------------------
35
- - '# - handles retries'
45
+ - file: a.py
46
+ code: |
47
+ # --------------------------------
48
+ # Shared fixtures from public data
49
+ # --------------------------------
50
+ - file: a.py
51
+ code: |
52
+ # ------------------------------
53
+ - { file: a.py, code: '# - handles retries' }
@@ -15,6 +15,13 @@ match:
15
15
  - sh
16
16
  - c
17
17
  - cpp
18
+ - go
19
+ - rs
20
+ - java
21
+ - cs
22
+ - kt
23
+ - swift
24
+ - rb
18
25
  message: >-
19
26
  Tracked debt marker still in the code at line {line}. It is attributed, so close the ticket
20
27
  or delete the marker before shipping.
@@ -10,9 +10,26 @@ match:
10
10
  (As an AI language model|It's important to remember that|In conclusion,|Let's dive into|the
11
11
  landscape of|tapestry of|delve into|unleash|unlocking|delving into|testament to)
12
12
  flags: i
13
+ scan: comments
13
14
  file_types:
14
15
  - md
15
16
  - txt
17
+ - go
18
+ - rs
19
+ - java
20
+ - c
21
+ - cpp
22
+ - cs
23
+ - kt
24
+ - swift
25
+ - rb
26
+ - html
27
+ - js
28
+ - ts
29
+ - tsx
30
+ - jsx
31
+ - py
32
+ - sh
16
33
  message: >-
17
34
  Potential AI-generated fluff or overused cliché '{match}' detected at line {line}. Keep
18
35
  documentation concise and human-centric.
@@ -16,6 +16,9 @@ match:
16
16
  - java
17
17
  - json
18
18
  - env
19
+ # The same decision as the paths below, for languages that keep their
20
+ # tests in the file they test.
21
+ exclude_test_code: true
19
22
  exclude_files:
20
23
  - '**/test/**'
21
24
  - '**/tests/**'
@@ -16,6 +16,15 @@ match:
16
16
  - py
17
17
  - sh
18
18
  - css
19
+ - go
20
+ - rs
21
+ - java
22
+ - c
23
+ - cpp
24
+ - cs
25
+ - kt
26
+ - swift
27
+ - rb
19
28
  supersedes:
20
29
  - VBC-907
21
30
  - VBC-150
@@ -5,20 +5,36 @@ category: clean-code
5
5
  tags:
6
6
  - clean-code
7
7
  match:
8
+ # The marker has to open the comment. Matching it mid-sentence read prose
9
+ # about TODOs as a TODO: `// a TODO. Sites that DO build a header ...`
8
10
  regex: >-
9
- \b(?:TODO|FIXME|HACK|XXX)\b(?!\s*[\(\[][^)\]\n]+[\)\]])(?!\s*:?\s*(?:#\d+|[A-Z][A-Z0-9]+-\d+))
11
+ ^[^\n\w]*(?:TODO|FIXME|HACK|XXX)\b(?!\s*[\(\[][^)\]\n]+[\)\]])(?!\s*:?\s*(?:#\d+|[A-Z][A-Z0-9]+-\d+))
12
+ flags: m
10
13
  scan: comments
11
14
  file_types:
12
15
  - js
13
16
  - ts
14
17
  - py
15
18
  - sh
19
+ - go
20
+ - rs
21
+ - java
22
+ - c
23
+ - cpp
24
+ - cs
25
+ - kt
26
+ - swift
27
+ - rb
16
28
  message: >-
17
29
  Unattributed debt marker at line {line}. Nobody owns it, so nobody will fix it. Use TODO(owner):
18
30
  or reference an issue such as TODO: #123.
19
31
  tests:
20
32
  fire:
21
33
  - '// TODO: wire up retries'
34
+ - '// TODO: drain the queue before closing'
22
35
  quiet:
36
+ # Prose about a TODO is not a TODO.
37
+ - '// a TODO. Sites that build a header from dynamic data need one'
38
+ - '/// Reviewer note: `?` used to be a TODO no-op'
23
39
  - '// TODO(fab): wire up retries'
24
40
  - '// TODO: #123 wire up retries'
@@ -18,6 +18,9 @@ match:
18
18
  - go
19
19
  - rs
20
20
  - html
21
+ # The same decision as the paths below, for languages that keep their
22
+ # tests in the file they test.
23
+ exclude_test_code: true
21
24
  exclude_files:
22
25
  - '**/test/**'
23
26
  - '**/tests/**'
@@ -20,6 +20,14 @@ match:
20
20
  - rs
21
21
  - java
22
22
  - sh
23
+ - tsx
24
+ - jsx
25
+ - c
26
+ - cpp
27
+ - cs
28
+ - kt
29
+ - swift
30
+ - rb
23
31
  message: >-
24
32
  Placeholder text 'Lorem ipsum' detected at line {line}. Replace with real content before
25
33
  committing.
@@ -8,9 +8,19 @@ tags:
8
8
  match:
9
9
  regex: (coming soon|under construction|not yet written|🚧\s*wip|todo:\s*write)
10
10
  flags: i
11
+ scan: comments
11
12
  file_types:
12
13
  - md
13
14
  - txt
15
+ - go
16
+ - rs
17
+ - java
18
+ - c
19
+ - cpp
20
+ - cs
21
+ - kt
22
+ - swift
23
+ - rb
14
24
  message: >-
15
25
  Placeholder documentation content '{match}' at line {line}. Documentation stubs with "coming
16
26
  soon" text signal an abandoned project to new contributors. Either write the section or