lucidscan 0.5.12__py3-none-any.whl → 0.5.13__py3-none-any.whl
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.
- lucidscan/cli/commands/help.py +1 -1
- lucidscan/plugins/linters/eslint.py +48 -2
- lucidscan/plugins/reporters/sarif_reporter.py +1 -1
- {lucidscan-0.5.12.dist-info → lucidscan-0.5.13.dist-info}/METADATA +5 -5
- {lucidscan-0.5.12.dist-info → lucidscan-0.5.13.dist-info}/RECORD +9 -9
- {lucidscan-0.5.12.dist-info → lucidscan-0.5.13.dist-info}/WHEEL +0 -0
- {lucidscan-0.5.12.dist-info → lucidscan-0.5.13.dist-info}/entry_points.txt +0 -0
- {lucidscan-0.5.12.dist-info → lucidscan-0.5.13.dist-info}/licenses/LICENSE +0 -0
- {lucidscan-0.5.12.dist-info → lucidscan-0.5.13.dist-info}/top_level.txt +0 -0
lucidscan/cli/commands/help.py
CHANGED
|
@@ -33,7 +33,7 @@ def get_help_content() -> str:
|
|
|
33
33
|
if docs_path.exists():
|
|
34
34
|
return docs_path.read_text(encoding="utf-8")
|
|
35
35
|
|
|
36
|
-
return "Help documentation not found. Visit https://github.com/
|
|
36
|
+
return "Help documentation not found. Visit https://github.com/lucidscan/lucidscan"
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
class HelpCommand(Command):
|
|
@@ -32,6 +32,12 @@ SEVERITY_MAP = {
|
|
|
32
32
|
1: Severity.MEDIUM, # warning
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
# Supported file extensions for ESLint
|
|
36
|
+
ESLINT_EXTENSIONS = {
|
|
37
|
+
".js", ".jsx", ".mjs", ".cjs",
|
|
38
|
+
".ts", ".tsx", ".mts", ".cts",
|
|
39
|
+
}
|
|
40
|
+
|
|
35
41
|
|
|
36
42
|
class ESLintLinter(LinterPlugin):
|
|
37
43
|
"""ESLint linter plugin for JavaScript/TypeScript code analysis."""
|
|
@@ -135,8 +141,9 @@ class ESLintLinter(LinterPlugin):
|
|
|
135
141
|
]
|
|
136
142
|
|
|
137
143
|
# Add paths to check - default to src if exists, otherwise current dir
|
|
144
|
+
# Filter to only include JS/TS files to avoid ESLint errors on unsupported files
|
|
138
145
|
if context.paths:
|
|
139
|
-
paths =
|
|
146
|
+
paths = self._filter_paths(context.paths, context.project_root)
|
|
140
147
|
else:
|
|
141
148
|
src_dir = context.project_root / "src"
|
|
142
149
|
if src_dir.exists():
|
|
@@ -144,6 +151,11 @@ class ESLintLinter(LinterPlugin):
|
|
|
144
151
|
else:
|
|
145
152
|
paths = ["."]
|
|
146
153
|
|
|
154
|
+
# If no valid paths after filtering, skip linting
|
|
155
|
+
if not paths:
|
|
156
|
+
LOGGER.debug("No JavaScript/TypeScript files to lint")
|
|
157
|
+
return []
|
|
158
|
+
|
|
147
159
|
cmd.extend(paths)
|
|
148
160
|
|
|
149
161
|
# Add ignore patterns
|
|
@@ -200,7 +212,7 @@ class ESLintLinter(LinterPlugin):
|
|
|
200
212
|
]
|
|
201
213
|
|
|
202
214
|
if context.paths:
|
|
203
|
-
paths =
|
|
215
|
+
paths = self._filter_paths(context.paths, context.project_root)
|
|
204
216
|
else:
|
|
205
217
|
src_dir = context.project_root / "src"
|
|
206
218
|
if src_dir.exists():
|
|
@@ -208,6 +220,11 @@ class ESLintLinter(LinterPlugin):
|
|
|
208
220
|
else:
|
|
209
221
|
paths = ["."]
|
|
210
222
|
|
|
223
|
+
# If no valid paths after filtering, skip fix
|
|
224
|
+
if not paths:
|
|
225
|
+
LOGGER.debug("No JavaScript/TypeScript files to fix")
|
|
226
|
+
return FixResult()
|
|
227
|
+
|
|
211
228
|
cmd.extend(paths)
|
|
212
229
|
|
|
213
230
|
exclude_patterns = context.get_exclude_patterns()
|
|
@@ -247,6 +264,35 @@ class ESLintLinter(LinterPlugin):
|
|
|
247
264
|
issues_remaining=len(post_issues),
|
|
248
265
|
)
|
|
249
266
|
|
|
267
|
+
def _filter_paths(
|
|
268
|
+
self,
|
|
269
|
+
paths: List[Path],
|
|
270
|
+
project_root: Path,
|
|
271
|
+
) -> List[str]:
|
|
272
|
+
"""Filter paths to only include JS/TS files.
|
|
273
|
+
|
|
274
|
+
Directories are passed through as-is (ESLint will handle them).
|
|
275
|
+
Files are filtered to only include supported extensions.
|
|
276
|
+
|
|
277
|
+
Args:
|
|
278
|
+
paths: List of paths to filter.
|
|
279
|
+
project_root: Project root directory.
|
|
280
|
+
|
|
281
|
+
Returns:
|
|
282
|
+
List of filtered path strings.
|
|
283
|
+
"""
|
|
284
|
+
filtered = []
|
|
285
|
+
for path in paths:
|
|
286
|
+
if path.is_dir():
|
|
287
|
+
# Directories are passed through - ESLint handles file discovery
|
|
288
|
+
filtered.append(str(path))
|
|
289
|
+
elif path.suffix.lower() in ESLINT_EXTENSIONS:
|
|
290
|
+
# Only include files with supported extensions
|
|
291
|
+
filtered.append(str(path))
|
|
292
|
+
else:
|
|
293
|
+
LOGGER.debug(f"Skipping non-JS/TS file: {path}")
|
|
294
|
+
return filtered
|
|
295
|
+
|
|
250
296
|
def _parse_output(self, output: str, project_root: Path) -> List[UnifiedIssue]:
|
|
251
297
|
"""Parse ESLint JSON output.
|
|
252
298
|
|
|
@@ -19,7 +19,7 @@ SARIF_SCHEMA = "https://json.schemastore.org/sarif-2.1.0.json"
|
|
|
19
19
|
SARIF_VERSION = "2.1.0"
|
|
20
20
|
|
|
21
21
|
# Project information
|
|
22
|
-
LUCIDSCAN_INFO_URI = "https://github.com/
|
|
22
|
+
LUCIDSCAN_INFO_URI = "https://github.com/lucidscan/lucidscan"
|
|
23
23
|
|
|
24
24
|
# Severity mapping to SARIF security-severity (CVSS-aligned 0.0-10.0)
|
|
25
25
|
# and level (error, warning, note)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lucidscan
|
|
3
|
-
Version: 0.5.
|
|
3
|
+
Version: 0.5.13
|
|
4
4
|
Summary: LucidScan - The trust layer for AI-assisted development
|
|
5
5
|
Author-email: Voldeq GmbH <toni.antunovic@voldeq.com>
|
|
6
6
|
License: Apache-2.0
|
|
@@ -41,11 +41,11 @@ Dynamic: license-file
|
|
|
41
41
|
|
|
42
42
|
# LucidScan
|
|
43
43
|
|
|
44
|
-
[](https://github.com/lucidscan/lucidscan/actions/workflows/ci.yml)
|
|
45
|
+
[](https://codecov.io/gh/lucidscan/lucidscan)
|
|
46
46
|
[](https://pypi.org/project/lucidscan/)
|
|
47
47
|
[](https://pypi.org/project/lucidscan/)
|
|
48
|
-
[](https://github.com/lucidscan/lucidscan/blob/main/LICENSE)
|
|
49
49
|
|
|
50
50
|
**The trust layer for AI-assisted development.**
|
|
51
51
|
|
|
@@ -225,7 +225,7 @@ lucidscan status [--tools]
|
|
|
225
225
|
## Development
|
|
226
226
|
|
|
227
227
|
```bash
|
|
228
|
-
git clone https://github.com/
|
|
228
|
+
git clone https://github.com/lucidscan/lucidscan.git
|
|
229
229
|
cd lucidscan
|
|
230
230
|
pip install -e ".[dev]"
|
|
231
231
|
pytest tests/
|
|
@@ -12,7 +12,7 @@ lucidscan/cli/exit_codes.py,sha256=AFj5P8mvXF5epcQBEVlUxNjc-XWjx1arLi0uPWnhbzc,4
|
|
|
12
12
|
lucidscan/cli/runner.py,sha256=fZXDkYB39S0yC6Eg4MNqxQaPxfib8iusPLHe-h_0flg,8907
|
|
13
13
|
lucidscan/cli/commands/__init__.py,sha256=uJyTlzRMol6hLWG4blb3MGCJqJlFPMqWVHQK7FSEDEo,1665
|
|
14
14
|
lucidscan/cli/commands/autoconfigure.py,sha256=vpdQ6WH_uHSzEDbkyp41ZkUrcMWS2RV-C4SOqxrMP7k,9864
|
|
15
|
-
lucidscan/cli/commands/help.py,sha256=
|
|
15
|
+
lucidscan/cli/commands/help.py,sha256=3BWWf4RftjnBZX1vZ1u9vz5MntuKmFp7pdmUyNgYubQ,1944
|
|
16
16
|
lucidscan/cli/commands/init.py,sha256=ZkwE-zw8qR1TfBuk5SCVzfOSwuL6dX29SgQ3hwLoZkM,21403
|
|
17
17
|
lucidscan/cli/commands/list_scanners.py,sha256=QUtNDOZSU-cWdGOD6TIRiFNqnNwyZ2bXOxXFwbUl4wQ,1885
|
|
18
18
|
lucidscan/cli/commands/scan.py,sha256=SUAVXCDlM3BWdb7m6Jlqe1u8B2ygwCzP2yyqt-lYdBM,11500
|
|
@@ -59,12 +59,12 @@ lucidscan/plugins/linters/__init__.py,sha256=ptAjbOSi7tOenMdUI4QBgA_bGmSrw25Pi_2
|
|
|
59
59
|
lucidscan/plugins/linters/base.py,sha256=JHEG4z3uJNAGW2Fxk-Y7PbN8lvJMeG0Axdjv19aEntg,3258
|
|
60
60
|
lucidscan/plugins/linters/biome.py,sha256=k411irgzDDB5tI9iuiQHy7KZ4vC6znLOs4NCkAk1Gx4,13651
|
|
61
61
|
lucidscan/plugins/linters/checkstyle.py,sha256=zL53zI6CaBgEV1MP3PAvPbXzEq_rdnELmVT-c8fiT4Q,11964
|
|
62
|
-
lucidscan/plugins/linters/eslint.py,sha256=
|
|
62
|
+
lucidscan/plugins/linters/eslint.py,sha256=l5tiDroo7JWUKUmTkOGSUfS2im-GNeRD5rnSjNWuAiM,12206
|
|
63
63
|
lucidscan/plugins/linters/ruff.py,sha256=rgI_zS7qJBYtSSfHDgx9rE0D1tzvioxJWq-S9UY0qqc,16072
|
|
64
64
|
lucidscan/plugins/reporters/__init__.py,sha256=0KbwN9xTvlG_XSByn9zzuCUudhh5N-VPufSF7BEnwtQ,1459
|
|
65
65
|
lucidscan/plugins/reporters/base.py,sha256=zLhOl5VnlWuMBSoVNxm1kuJObj7vxhU1qLRuC0G4Qto,828
|
|
66
66
|
lucidscan/plugins/reporters/json_reporter.py,sha256=KxKfVvOlcom1UWxRTYP3AyYX8-aM0dU0tFsFFH5dKBU,2685
|
|
67
|
-
lucidscan/plugins/reporters/sarif_reporter.py,sha256=
|
|
67
|
+
lucidscan/plugins/reporters/sarif_reporter.py,sha256=dCaQdVeDixLg2wcIqF07M9a-yq60W6c0MBkL2CWx4Us,9751
|
|
68
68
|
lucidscan/plugins/reporters/summary_reporter.py,sha256=BNUyYpQfcF9e5gb8H68ppZDEfxHAfMkEAgUdcLYGKGI,1986
|
|
69
69
|
lucidscan/plugins/reporters/table_reporter.py,sha256=L8gtiNBCkBbJGTMcf-d87lYinM4Iuuc5yHr8ayDsJio,2601
|
|
70
70
|
lucidscan/plugins/scanners/__init__.py,sha256=Eq_KFR9ZILBj-yUpInDmIHOiMhf2ZwTVWrQMyAGF0FU,1782
|
|
@@ -83,9 +83,9 @@ lucidscan/plugins/type_checkers/base.py,sha256=ILH6ZqEb1eErkdXK-tlqiBBatU3cwgD2S
|
|
|
83
83
|
lucidscan/plugins/type_checkers/mypy.py,sha256=CTMo7y-ZHqylb07zd9ywWkVyd4xFCYAMFsD2JIEStuk,10693
|
|
84
84
|
lucidscan/plugins/type_checkers/pyright.py,sha256=f9dxFMA2pBEKOsBbw-IDamyt17aqsaHWWmk_wQZv_VQ,9421
|
|
85
85
|
lucidscan/plugins/type_checkers/typescript.py,sha256=zA_gvosk-yfVzWG9c2nK4cJY2F_wk7U-1u704K1qieE,8170
|
|
86
|
-
lucidscan-0.5.
|
|
87
|
-
lucidscan-0.5.
|
|
88
|
-
lucidscan-0.5.
|
|
89
|
-
lucidscan-0.5.
|
|
90
|
-
lucidscan-0.5.
|
|
91
|
-
lucidscan-0.5.
|
|
86
|
+
lucidscan-0.5.13.dist-info/licenses/LICENSE,sha256=Rk8TkW9DoGbCku6y8YG2-MxCAT9mqaqQNZNZhVsaTZ8,11366
|
|
87
|
+
lucidscan-0.5.13.dist-info/METADATA,sha256=iyv_Q2oWzV_cscLdlmZZNbI1eafpg3t56A7hPOEIqfA,6961
|
|
88
|
+
lucidscan-0.5.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
89
|
+
lucidscan-0.5.13.dist-info/entry_points.txt,sha256=lB4VthB8R9YidwDx5r9ZCxCamG9yAR9_Ph1BOPzdWtk,1423
|
|
90
|
+
lucidscan-0.5.13.dist-info/top_level.txt,sha256=6p83YY3SjOWWLzeG9FRP2WNMSGJH8WzduSFwwIT1g_0,10
|
|
91
|
+
lucidscan-0.5.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|