mjolnir-qa 0.5.11 → 0.5.13
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/CHANGELOG.md +32 -0
- package/README.ar.md +21 -15
- package/README.bn.md +17 -9
- package/README.br.md +25 -16
- package/README.bs.md +23 -15
- package/README.da.md +23 -16
- package/README.de.md +24 -16
- package/README.es.md +25 -16
- package/README.fr.md +25 -16
- package/README.gr.md +24 -16
- package/README.he.md +22 -15
- package/README.it.md +25 -16
- package/README.ja.md +16 -9
- package/README.ko.md +23 -15
- package/README.md +124 -225
- package/README.no.md +23 -16
- package/README.pl.md +17 -9
- package/README.ru.md +26 -17
- package/README.th.md +16 -9
- package/README.tr.md +23 -16
- package/README.uk.md +24 -16
- package/README.vi.md +22 -15
- package/README.zh.md +21 -15
- package/README.zht.md +21 -15
- package/dist/cli.d.mts +1 -1
- package/dist/cli.mjs +84 -40
- package/dist/mcp/stdio.mjs +84 -40
- package/package.json +6 -1
package/README.fr.md
CHANGED
|
@@ -15,7 +15,7 @@ exactement où la confiance se brise.
|
|
|
15
15
|
|
|
16
16
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | Français | [Italiano](README.it.md) | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | [Türkçe](README.tr.md) | [Українська](README.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -300,15 +300,15 @@ sortir — c'est le pare-feu anti faux positifs.
|
|
|
300
300
|
|
|
301
301
|
### Quelle part est mesurée
|
|
302
302
|
|
|
303
|
-
**
|
|
303
|
+
**78 des 99 règles portent un taux de faux positifs mesuré sur du vrai
|
|
304
304
|
code OSS** (≥ 10 constats classés à la main chacun ; voir
|
|
305
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Les
|
|
305
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Les 21 autres sortent sur
|
|
306
306
|
l'estimation de l'auteur. Chaque pied de scan vous dit combien des
|
|
307
307
|
règles _déclenchées_ sont mesurées ; `mjolnir rules --unmeasured` liste
|
|
308
308
|
celles qui ne le sont pas ; la page `mjolnir explain` de chaque règle
|
|
309
309
|
énonce son statut. Nous publions le taux même quand il est laid —
|
|
310
310
|
QA-CS-103 s'audite à 95 % et est mis en quarantaine pour ça. Faire
|
|
311
|
-
grandir ce
|
|
311
|
+
grandir ce chiffre est le travail continu du projet.
|
|
312
312
|
|
|
313
313
|
### Tiers de règles et maturité par langage
|
|
314
314
|
|
|
@@ -464,14 +464,14 @@ changement de test suspect dans un diff ; elle ne prouve pas que le
|
|
|
464
464
|
système de vérification dans son ensemble est digne de confiance — et
|
|
465
465
|
elle ne voit que le diff que vous lui montrez.
|
|
466
466
|
|
|
467
|
-
| | Revue de code IA (Copilot, etc.) |
|
|
468
|
-
| ------------------------------------------- | :------------------------------------: |
|
|
469
|
-
| Coût par scan | Tokens (évolue avec la taille du diff) |
|
|
470
|
-
| Voit toute la suite + toutes les configs CI | Seulement le diff de PR montré |
|
|
471
|
-
| Déterministe (même entrée → même sortie) | ❌ (non déterministe) |
|
|
472
|
-
| Détecte des motifs dormants depuis des mois | Seulement s'il est dans le contexte |
|
|
473
|
-
| Se souvient des constats entre les runs | ❌ (aucune mémoire entre sessions) |
|
|
474
|
-
| Tourne sans déclencheur humain | Nécessite une PR ou un prompt |
|
|
467
|
+
| | Revue de code IA (Copilot, etc.) | **Mjölnir** |
|
|
468
|
+
| ------------------------------------------- | :------------------------------------: | :---------------------------------: |
|
|
469
|
+
| Coût par scan | Tokens (évolue avec la taille du diff) | **Zéro** (local, installé) |
|
|
470
|
+
| Voit toute la suite + toutes les configs CI | Seulement le diff de PR montré | **Tout, à chaque fois** |
|
|
471
|
+
| Déterministe (même entrée → même sortie) | ❌ (non déterministe) | **✅** |
|
|
472
|
+
| Détecte des motifs dormants depuis des mois | Seulement s'il est dans le contexte | **✅** (scanne tous les fichiers) |
|
|
473
|
+
| Se souvient des constats entre les runs | ❌ (aucune mémoire entre sessions) | **✅** (baseline + diff) |
|
|
474
|
+
| Tourne sans déclencheur humain | Nécessite une PR ou un prompt | **✅** (hook CI, quelques secondes) |
|
|
475
475
|
|
|
476
476
|
**Utilisez les deux.** L'IA attrape la nuance, l'intention et les
|
|
477
477
|
défauts de conception qu'aucune regex ne trouve. Mjölnir attrape les
|
|
@@ -597,11 +597,20 @@ réutilisés.
|
|
|
597
597
|
positifs issu de vrai code OSS sortent dans les tiers vedettes (voir
|
|
598
598
|
[Quelle part est mesurée](#quelle-part-est-mesurée)) ; le pied de scan
|
|
599
599
|
et `mjolnir rules --unmeasured` vous disent lesquels.
|
|
600
|
-
- **Confiance plugins** — les plugins sont des paquets npm déclarés
|
|
601
|
-
sous `"plugins"
|
|
600
|
+
- **Confiance plugins & porte d'exécution** — les plugins sont des paquets npm déclarés
|
|
601
|
+
sous `"plugins"` ; les modules JS vivent dans `mjolnir-rules/*.mjs`.
|
|
602
|
+
Il n'y a **pas de sandbox** : le code d'un plugin
|
|
602
603
|
tourne avec tous les privilèges Node, le même modèle de confiance que
|
|
603
|
-
les plugins ESLint ou Vitest.
|
|
604
|
-
|
|
604
|
+
les plugins ESLint ou Vitest. Pour cette raison, l'exécution de code est
|
|
605
|
+
**opt-in à chaque scan** : passez `--enable-plugins` (ou définissez
|
|
606
|
+
`MJOLNIR_ENABLE_PLUGINS=1`), sinon les sources ne sont PAS chargées — une
|
|
607
|
+
notification stderr bruyante liste exactement ce qui a été ignoré.
|
|
608
|
+
Scanner du code non fiable ne l'exécute jamais. Les manifestes de règles
|
|
609
|
+
JSON (`mjolnir-rules/*.json`) ne sont pas concernés : ils déclarent des
|
|
610
|
+
motifs regex et n'exécutent aucun code par conception. Les préfixes
|
|
611
|
+
d'ID de règles core sont
|
|
612
|
+
réservés et refusés aux plugins et règles externes pour empêcher
|
|
613
|
+
l'usurpation.
|
|
605
614
|
- **Règles externes locales au workspace** (par dossier, zéro réseau) —
|
|
606
615
|
un répertoire `mjolnir-rules/` à côté de la cible du scan charge des
|
|
607
616
|
règles personnalisées : des fichiers JSON déclarent des motifs regex
|
package/README.gr.md
CHANGED
|
@@ -15,7 +15,7 @@ CI pipelines, αναφέρει δείκτη αξιοπιστίας και δεί
|
|
|
15
15
|
|
|
16
16
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | [Türkçe](README.tr.md) | [Українська](README.uk.md) | [বাংলা](README.bn.md) | Ελληνικά | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -296,15 +296,15 @@ npx mjolnir-qa@latest --scope changed
|
|
|
296
296
|
|
|
297
297
|
### Πόσο από αυτό είναι μετρημένο
|
|
298
298
|
|
|
299
|
-
**
|
|
299
|
+
**78 από 99 κανόνες φέρουν ποσοστό false positive μετρημένο σε πραγματικό
|
|
300
300
|
κώδικα OSS** (≥ 10 χειροκίνητα ταξινομημένα ευρήματα ο καθένας· βλ.
|
|
301
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Οι άλλοι
|
|
301
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Οι άλλοι 21 κυκλοφορούν πάνω στην
|
|
302
302
|
εκτίμηση του συγγραφέα. Το υποσέλιδο κάθε σκαν σου λέει πόσοι από τους
|
|
303
303
|
_ενεργούς_ κανόνες είναι μετρημένοι· `mjolnir rules --unmeasured`
|
|
304
304
|
παραθέτει τους άμετρητους· η σελίδα `mjolnir explain` κάθε κανόνα
|
|
305
305
|
δηλώνει την κατάστασή του. Δημοσιεύουμε το ποσοστό ακόμα κι όταν είναι
|
|
306
306
|
άσχημο — ο QA-CS-103 αυτοελέγχεται στο 95 % και είναι σε καραντίνα γι'
|
|
307
|
-
αυτό. Να μεγαλώσει
|
|
307
|
+
αυτό. Να μεγαλώσει αυτός ο αριθμός είναι η συνεχιζόμενη δουλειά του έργου.
|
|
308
308
|
|
|
309
309
|
### Tiers κανόνων και ωριμότητα γλωσσών
|
|
310
310
|
|
|
@@ -459,14 +459,14 @@ linting:
|
|
|
459
459
|
επαλήθευσης συνολικά αξίζει εμπιστοσύνη — και βλέπει μόνο το diff που
|
|
460
460
|
του δείχνεις.
|
|
461
461
|
|
|
462
|
-
| | AI code review (Copilot κ.λπ.) |
|
|
463
|
-
| -------------------------------------------- | :--------------------------------------: |
|
|
464
|
-
| Κόστος ανά σκαν | Tokens (κλιμακώνεται με το μέγεθος diff) |
|
|
465
|
-
| Βλέπει όλη τη σουίτα + όλες τις ρυθμίσεις CI | Μόνο το PR diff που δείχνεις |
|
|
466
|
-
| Καθοριστικό (ίδιο input → ίδιο output) | ❌ (μη καθοριστικό) |
|
|
467
|
-
| Πιάνει μοτίβα που κοιμούνται μήνες | Μόνο αν είναι στο context |
|
|
468
|
-
| Θυμάται ευρήματα μεταξύ runs | ❌ (καμία μνήμη μεταξύ συνεδριών) |
|
|
469
|
-
| Τρέχει χωρίς ανθρώπινο έναυσμα | Χρειάζεται PR ή prompt | **✅** (CI hook,
|
|
462
|
+
| | AI code review (Copilot κ.λπ.) | **Mjölnir** |
|
|
463
|
+
| -------------------------------------------- | :--------------------------------------: | :--------------------------------------: |
|
|
464
|
+
| Κόστος ανά σκαν | Tokens (κλιμακώνεται με το μέγεθος diff) | **Μηδέν** (τοπικό, εγκατεστημένο) |
|
|
465
|
+
| Βλέπει όλη τη σουίτα + όλες τις ρυθμίσεις CI | Μόνο το PR diff που δείχνεις | **Όλα, κάθε φορά** |
|
|
466
|
+
| Καθοριστικό (ίδιο input → ίδιο output) | ❌ (μη καθοριστικό) | **✅** |
|
|
467
|
+
| Πιάνει μοτίβα που κοιμούνται μήνες | Μόνο αν είναι στο context | **✅** (σκανάρει όλα τα αρχεία) |
|
|
468
|
+
| Θυμάται ευρήματα μεταξύ runs | ❌ (καμία μνήμη μεταξύ συνεδριών) | **✅** (baseline + diff) |
|
|
469
|
+
| Τρέχει χωρίς ανθρώπινο έναυσμα | Χρειάζεται PR ή prompt | **✅** (CI hook, τρέχει σε δευτερόλεπτα) |
|
|
470
470
|
|
|
471
471
|
**Χρησιμοποίησέ τα και τα δύο.** Το AI πιάνει νύαντσε, πρόθεση και
|
|
472
472
|
σχεδιαστικά ελαττώματα που καμία regex δεν βρίσκει. Το Mjölnir πιάνει
|
|
@@ -592,11 +592,19 @@ detached HEAD, μη-git στόχος, διαφορετικό default branch —
|
|
|
592
592
|
[Πόσο από αυτό είναι μετρημένο](#πόσο-από-αυτό-είναι-μετρημένο)); το
|
|
593
593
|
υποσέλιδο σκαν και το `mjolnir rules --unmeasured` σου λένε ποιος
|
|
594
594
|
ποιος.
|
|
595
|
-
- **Εμπιστοσύνη plugins
|
|
596
|
-
|
|
595
|
+
- **Εμπιστοσύνη plugins και πύλη εκτέλεσης** — τα plugins είναι πακέτα npm
|
|
596
|
+
δηλωμένα κάτω
|
|
597
|
+
από `"plugins"`· τα JS modules ζουν στο `mjolnir-rules/*.mjs`.
|
|
598
|
+
**Δεν υπάρχει sandbox**: ο κώδικας plugin τρέχει με
|
|
597
599
|
πλήρη δικαιώματα Node, το ίδιο μοντέλο εμπιστοσύνης με plugins ESLint
|
|
598
|
-
ή Vitest.
|
|
599
|
-
|
|
600
|
+
ή Vitest. Γι' αυτό η εκτέλεση κώδικα είναι **opt-in σε κάθε σκαν**:
|
|
601
|
+
δώστε `--enable-plugins` (ή ορίστε `MJOLNIR_ENABLE_PLUGINS=1`),
|
|
602
|
+
αλλιώς οι πηγές ΔΕΝ φορτώνονται — μια δυνατή ειδοποίηση stderr
|
|
603
|
+
παραθέτει ακριβώς τι παραλείφθηκε. Το σκανάρει αν αξιόπιστο κώδικα
|
|
604
|
+
δεν τον εκτελεί ποτέ. Τα JSON rule manifests (`mjolnir-rules/*.json`)
|
|
605
|
+
δεν επηρεάζονται: δηλώνουν regex μοτίβα και δεν εκτελούν κώδικα εκ
|
|
606
|
+
σχεδίασης. Core προθέματα rule-ID είναι δεσμευμένα και απορρίπτονται
|
|
607
|
+
από plugins και εξωτερικούς κανόνες κατά της πλαστοπροσωπίας.
|
|
600
608
|
- **Εξωτερικοί κανόνες τοπικοί στο workspace** (φάκελος, μηδέν δίκτυο) —
|
|
601
609
|
ένας φάκελος `mjolnir-rules/` δίπλα στον στόχο σκαν φορτώνει custom
|
|
602
610
|
κανόνες: JSON αρχεία δηλώνουν regex μοτίβα (κανένας κώδικας δεν
|
package/README.he.md
CHANGED
|
@@ -14,7 +14,7 @@ CI, מדווח ציון הגינות ומציג בדיוק היכן האמון
|
|
|
14
14
|
|
|
15
15
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | [Türkçe](README.tr.md) | [Українська](README.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | עברית | [العربية](README.ar.md) | [Bosanski](README.bs.md)
|
|
16
16
|
|
|
17
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
17
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
20
|
npx mjolnir-qa@latest
|
|
@@ -288,13 +288,13 @@ npx mjolnir-qa@latest --scope changed
|
|
|
288
288
|
|
|
289
289
|
### כמה מזה נמדד
|
|
290
290
|
|
|
291
|
-
**
|
|
291
|
+
**78 מתוך 99 כללים נושאים שיעור false positives שנמדד מול קוד OSS אמיתי**
|
|
292
292
|
(≥ 10 ממצאים שסווגו ידנית כל אחד; ראו
|
|
293
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). ה‑
|
|
293
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). ה‑21 האחרים יוצאים על הערכת
|
|
294
294
|
המחבר. התחתית של כל סריקה אומרת כמה מהכללים ש_ירו_ נמדדו;
|
|
295
295
|
`mjolnir rules --unmeasured` מפרט את אלה שלא; עמוד `mjolnir explain`
|
|
296
296
|
של כל כלל מצהיר על מעמדו. אנחנו מפרסמים את השיעור גם כשהוא מכוער —
|
|
297
|
-
QA-CS-103 נבדק ב‑95% ומצוי בהסגר בגין זה. להגדיל את
|
|
297
|
+
QA-CS-103 נבדק ב‑95% ומצוי בהסגר בגין זה. להגדיל את המספר הזה הוא
|
|
298
298
|
העבודה המתמשכת של הפרויקט.
|
|
299
299
|
|
|
300
300
|
### רמות (tiers) של כללים ובשלות לפי שפה
|
|
@@ -439,14 +439,14 @@ Linters אומרים לך אם הקוד מציית לכללים. Mjölnir אומ
|
|
|
439
439
|
אינה מוכיחה שמערכת האימות כולה ראויה לאמון — והיא רואה רק את ה‑diff
|
|
440
440
|
שמציגים לה.
|
|
441
441
|
|
|
442
|
-
| | סקירת קוד AI (Copilot וכד') |
|
|
443
|
-
| -------------------------------- | :--------------------------: |
|
|
444
|
-
| עלות לסריקה | Token (מתרחב עם גודל ה‑diff) |
|
|
445
|
-
| רואה את כל החבילה + כל תצורות CI | רק את ה‑diff שמציגים לו |
|
|
446
|
-
| דטרמיניסטי (אותו קלט → אותו פלט) | ❌ (לא דטרמיניסטי) |
|
|
447
|
-
| תופס תבניות שישנות חודשים | רק אם הן בהקשר |
|
|
448
|
-
| זוכר ממצאים בין ריצות | ❌ (אין זיכרון בין הפעלות) |
|
|
449
|
-
| רץ ללא הדק אנושי | דרוש PR או prompt | **✅** (hook של CI,
|
|
442
|
+
| | סקירת קוד AI (Copilot וכד') | **Mjölnir** |
|
|
443
|
+
| -------------------------------- | :--------------------------: | :----------------------------: |
|
|
444
|
+
| עלות לסריקה | Token (מתרחב עם גודל ה‑diff) | **אפס** (מקומי, מותקן) |
|
|
445
|
+
| רואה את כל החבילה + כל תצורות CI | רק את ה‑diff שמציגים לו | **הכול, בכל פעם** |
|
|
446
|
+
| דטרמיניסטי (אותו קלט → אותו פלט) | ❌ (לא דטרמיניסטי) | **✅** |
|
|
447
|
+
| תופס תבניות שישנות חודשים | רק אם הן בהקשר | **✅** (סורק את כל הקבצים) |
|
|
448
|
+
| זוכר ממצאים בין ריצות | ❌ (אין זיכרון בין הפעלות) | **✅** (baseline + diff) |
|
|
449
|
+
| רץ ללא הדק אנושי | דרוש PR או prompt | **✅** (hook של CI, רץ בשניות) |
|
|
450
450
|
|
|
451
451
|
**השתמשו בשניהם.** AI תופס ניואנס, כוונה ופגמי עיצוב שאין regex
|
|
452
452
|
מוצא. Mjölnir תופס את התבניות המבניות ש‑AI מפספס כי הן נראות
|
|
@@ -558,10 +558,17 @@ Mjölnir הוא zero-config. `mjolnir.config.json` אופציונלי (או
|
|
|
558
558
|
- **נמדד, לא נטען** — רק כללים עם שיעור false positives מקוד OSS אמיתי
|
|
559
559
|
יוצאים ב‑tiers הכותרת (ראו [כמה מזה נמדד](#כמה-מזה-נמדד)); תחתית הסריקה
|
|
560
560
|
ו‑`mjolnir rules --unmeasured` אומרים לך מי מי.
|
|
561
|
-
- **אמון ב‑plugins
|
|
561
|
+
- **אמון ב‑plugins ושער הרצת הקוד** — plugins הם חבילות npm המוצהרות תחת
|
|
562
|
+
`"plugins"`; מודולי JS חיים ב‑`mjolnir-rules/*.mjs`.
|
|
562
563
|
**אין sandbox**: קוד plugin רץ בהרשאות Node מלאות, אותו מודל אמון
|
|
563
|
-
כמו plugins של ESLint או Vitest.
|
|
564
|
-
|
|
564
|
+
כמו plugins של ESLint או Vitest. בגלל זה, הרצת קוד היא **opt‑in בכל
|
|
565
|
+
סריקה**: העבירו `--enable-plugins` (או הגדירו
|
|
566
|
+
`MJOLNIR_ENABLE_PLUGINS=1`), אחרת המקורות לא נטענים — הודעת stderr
|
|
567
|
+
רועשת מפרטת בדיוק מה דולג. סריקת קוד לא מהימן לא מריצה אותו לעולם.
|
|
568
|
+
מניפסטי כללים ב‑JSON (`mjolnir-rules/*.json`) אינם מושפעים: הם
|
|
569
|
+
מצהירים תבניות regex ולא מריצים קוד כלל בעיצובם. קידומות מזהי
|
|
570
|
+
כללים core שמורות
|
|
571
|
+
ונדחות מ‑plugins ומכללים חיצוניים למניעת התחזות.
|
|
565
572
|
- **כללים חיצוניים מקומיים ל‑workspace** (מבוססי תיקייה, אפס רשת) —
|
|
566
573
|
תיקיית `mjolnir-rules/` ליד יעד הסריקה טוענת כללים מותאמים: קבצי JSON
|
|
567
574
|
מצהירים תבניות regex (שום קוד לא מורץ), מודולי `.mjs`/`.js` מייצאים
|
package/README.it.md
CHANGED
|
@@ -15,7 +15,7 @@ dove la fiducia si rompe.
|
|
|
15
15
|
|
|
16
16
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | Italiano | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | [Türkçe](README.tr.md) | [Українська](README.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -298,14 +298,14 @@ pubblicata — quello è il firewall dei falsi positivi.
|
|
|
298
298
|
|
|
299
299
|
### Quanto è misurato
|
|
300
300
|
|
|
301
|
-
**
|
|
301
|
+
**78 regole su 99 portano un tasso di falsi positivi misurato su vero
|
|
302
302
|
codice OSS** (≥ 10 riscontri classificati a mano ciascuna; vedi
|
|
303
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Le altre
|
|
303
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md)). Le altre 21 escono sulla stima
|
|
304
304
|
dell'autore. Ogni footer di scansione dice quante delle regole
|
|
305
305
|
_scattate_ sono misurate; `mjolnir rules --unmeasured` elenca quelle
|
|
306
306
|
che non lo sono; la pagina `mjolnir explain` di ogni regola dichiara il
|
|
307
307
|
suo stato. Pubblichiamo il tasso anche quando è brutto — QA-CS-103 si
|
|
308
|
-
audita al 95 % ed è in quarantena per questo. Far crescere quel
|
|
308
|
+
audita al 95 % ed è in quarantena per questo. Far crescere quel numero è il
|
|
309
309
|
lavoro continuo del progetto.
|
|
310
310
|
|
|
311
311
|
### Tier delle regole e maturità per linguaggio
|
|
@@ -461,14 +461,14 @@ modifica sospetta a un test in un diff; non dimostra che il sistema di
|
|
|
461
461
|
verifica nel suo insieme sia affidabile — e vede solo il diff che gli
|
|
462
462
|
mostri.
|
|
463
463
|
|
|
464
|
-
| | Code review IA (Copilot, ecc.) |
|
|
465
|
-
| --------------------------------------------- | :--------------------------------------: |
|
|
466
|
-
| Costo per scansione | Token (scala con la dimensione del diff) |
|
|
467
|
-
| Vede tutta la suite + tutte le config CI | Solo il diff di PR che mostri |
|
|
468
|
-
| Deterministico (stesso input → stesso output) | ❌ (non deterministico) |
|
|
469
|
-
| Becca pattern dormienti da mesi | Solo se è nel contesto |
|
|
470
|
-
| Ricorda i riscontri tra le esecuzioni | ❌ (nessuna memoria tra sessioni) |
|
|
471
|
-
| Gira senza innesco umano | Serve una PR o un prompt |
|
|
464
|
+
| | Code review IA (Copilot, ecc.) | **Mjölnir** |
|
|
465
|
+
| --------------------------------------------- | :--------------------------------------: | :-------------------------------------: |
|
|
466
|
+
| Costo per scansione | Token (scala con la dimensione del diff) | **Zero** (locale, installato) |
|
|
467
|
+
| Vede tutta la suite + tutte le config CI | Solo il diff di PR che mostri | **Tutto, ogni volta** |
|
|
468
|
+
| Deterministico (stesso input → stesso output) | ❌ (non deterministico) | **✅** |
|
|
469
|
+
| Becca pattern dormienti da mesi | Solo se è nel contesto | **✅** (scansiona tutti i file) |
|
|
470
|
+
| Ricorda i riscontri tra le esecuzioni | ❌ (nessuna memoria tra sessioni) | **✅** (baseline + diff) |
|
|
471
|
+
| Gira senza innesco umano | Serve una PR o un prompt | **✅** (hook CI, gira in pochi secondi) |
|
|
472
472
|
|
|
473
473
|
**Usali entrambi.** L'IA becca la sfumatura, l'intento e i difetti di
|
|
474
474
|
design che nessuna regex trova. Mjölnir becca i pattern strutturali che
|
|
@@ -594,11 +594,20 @@ riusati.
|
|
|
594
594
|
positivi da vero codice OSS escono nei tier di testa (vedi
|
|
595
595
|
[Quanto è misurato](#quanto-è-misurato)); il footer della scansione e
|
|
596
596
|
`mjolnir rules --unmeasured` ti dicono quale è quale.
|
|
597
|
-
- **Fiducia nei plugin** — i plugin sono
|
|
598
|
-
|
|
597
|
+
- **Fiducia nei plugin e cancelletto di esecuzione** — i plugin sono
|
|
598
|
+
pacchetti npm dichiarati sotto
|
|
599
|
+
`"plugins"`; i moduli JS vivono in `mjolnir-rules/*.mjs`.
|
|
600
|
+
**Non c'è sandbox**: il codice del plugin gira con tutti
|
|
599
601
|
i privilegi Node, lo stesso modello di fiducia dei plugin ESLint o
|
|
600
|
-
Vitest.
|
|
601
|
-
|
|
602
|
+
Vitest. Per questo, l'esecuzione di codice è **opt-in a ogni
|
|
603
|
+
scansione**: passa `--enable-plugins` (o imposta
|
|
604
|
+
`MJOLNIR_ENABLE_PLUGINS=1`), altrimenti le sorgenti NON vengono
|
|
605
|
+
caricate — un avviso chiassoso su stderr elenca esattamente cosa è
|
|
606
|
+
stato saltato. Scansionare codice non affidabile non lo esegue mai.
|
|
607
|
+
I manifest di regole JSON (`mjolnir-rules/*.json`) non sono toccati:
|
|
608
|
+
dichiarano pattern regex e per progetto non eseguono codice.
|
|
609
|
+
I prefissi di ID delle regole core sono riservati e rifiutati
|
|
610
|
+
da plugin e regole esterne per evitare spoofing.
|
|
602
611
|
- **Regole esterne locali al workspace** (basate su cartella, zero
|
|
603
612
|
rete) — una directory `mjolnir-rules/` accanto al target della
|
|
604
613
|
scansione carica regole personalizzate: i file JSON dichiarano
|
package/README.ja.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | [한국어](README.ko.md) | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [Dansk](README.da.md) | 日本語 | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | [Türkçe](README.tr.md) | [Українська](README.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -294,14 +294,14 @@ Python ルールは合計 20 本(QA-PY-001…012 pytest 衛生 + QA-PY-101…1
|
|
|
294
294
|
|
|
295
295
|
### どれだけが測定されているか
|
|
296
296
|
|
|
297
|
-
**99 ルールのうち
|
|
297
|
+
**99 ルールのうち 78 ルールが、実際の OSS コードに対して測定された
|
|
298
298
|
false-positive 率を備えています**(各ルールにつき手作業で分類された
|
|
299
|
-
検出 ≥ 10 件。[docs/FP-AUDIT.md](docs/FP-AUDIT.md) 参照)。残り
|
|
299
|
+
検出 ≥ 10 件。[docs/FP-AUDIT.md](docs/FP-AUDIT.md) 参照)。残り 21 ルール
|
|
300
300
|
は作者の推定で出荷されます。すべてのスキャンのフッターは、_発火した_
|
|
301
301
|
ルールのうちいくつが測定済みかを教えてくれます。`mjolnir rules --unmeasured`
|
|
302
302
|
は未測定のものを列挙します。各ルールの `mjolnir explain` ページはその
|
|
303
303
|
状態を明言します。率は醜くても公開します——QA-CS-103 は 95% で監査され、
|
|
304
|
-
|
|
304
|
+
それゆえ隔離されています。この数字を増やすことが、プロジェクトの継続的
|
|
305
305
|
な仕事です。
|
|
306
306
|
|
|
307
307
|
### ルールのティアと言語ごとの成熟度
|
|
@@ -459,7 +459,7 @@ flakiness レポートは生成しません。
|
|
|
459
459
|
| 決定論的(同じ入力 → 同じ出力) | ❌(非決定論的) | **✅** |
|
|
460
460
|
| 数か月眠っていたパターンを検出 | コンテキストにある場合のみ | **✅**(全ファイルをスキャン) |
|
|
461
461
|
| 実行間で検出を記憶 | ❌(セッション間の記憶なし) | **✅**(baseline + diff) |
|
|
462
|
-
| 人間のトリガーなしで動く | PR またはプロンプトが必要 |
|
|
462
|
+
| 人間のトリガーなしで動く | PR またはプロンプトが必要 | **✅**(CI フック、数秒で実行) |
|
|
463
463
|
|
|
464
464
|
**両方使いましょう。** AI は、どんな正規表現も見つけられないニュアンス、
|
|
465
465
|
意図、設計上の欠陥を捉えます。Mjölnir は、「意図的」に見えるがゆえに
|
|
@@ -581,11 +581,18 @@ JSON/SARIF レポートは `schemaVersion: 1` です。ルール ID
|
|
|
581
581
|
([どれだけが測定されているか](#どれだけが測定されているか) 参照)。
|
|
582
582
|
スキャンのフッターと `mjolnir rules --unmeasured` がどれがどれかを
|
|
583
583
|
教えます。
|
|
584
|
-
-
|
|
585
|
-
|
|
584
|
+
- **プラグインの信頼と実行ゲート** — プラグインは `"plugins"` の下で宣言された npm
|
|
585
|
+
パッケージです; JS モジュールは `mjolnir-rules/*.mjs` に置かれます。
|
|
586
|
+
**サンドボックスはありません**: プラグインコードは
|
|
586
587
|
完全な Node 権限で動作し、ESLint や Vitest のプラグインと同じ信頼
|
|
587
|
-
|
|
588
|
-
|
|
588
|
+
モデルです。そのため、コード実行は**スキャンごとにオプトイン**です:
|
|
589
|
+
`--enable-plugins` を渡すか(`MJOLNIR_ENABLE_PLUGINS=1` を設定するか)、
|
|
590
|
+
そうでなければソースはロードされません — 目立つ stderr の通知が、
|
|
591
|
+
スキップされたものを正確に列挙します。信頼できないコードをスキャンしても、
|
|
592
|
+
それが実行されることはありません。JSON ルールマニフェスト
|
|
593
|
+
(`mjolnir-rules/*.json`)は影響を受けません: 正規表現パターンを宣言し、
|
|
594
|
+
設計上コードを一切実行しません。コアルール ID の接頭辞は予約されており、
|
|
595
|
+
なりすまし防止のためプラグインおよび外部ルールからは拒否されます。
|
|
589
596
|
- **ワークスペースローカルの外部ルール**(フォルダベース、ネットワーク
|
|
590
597
|
ゼロ)— スキャン対象の隣にある `mjolnir-rules/` ディレクトリがカスタム
|
|
591
598
|
ルールを読み込みます: JSON ファイルは正規表現パターンを宣言し(コードは
|
package/README.ko.md
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
|
|
16
16
|
[English](README.md) | [简体中文](README.zh.md) | [繁體中文](README.zht.md) | 한국어 | [Deutsch](README.de.md) | [Español](README.es.md) | [Français](README.fr.md) | [Italiano](README.it.md) | [Dansk](README.da.md) | [日本語](README.ja.md) | [Polski](README.pl.md) | [Русский](README.ru.md) | [Norsk](README.no.md) | [Português (Brasil)](README.br.md) | [ไทย](README.th.md) | [Türkçe](README.tr.md) | [Українська](README.uk.md) | [বাংলা](README.bn.md) | [Ελληνικά](README.gr.md) | [Tiếng Việt](README.vi.md) | [עברית](README.he.md) | [العربية](README.ar.md) | [Bosanski](README.bs.md)
|
|
17
17
|
|
|
18
|
-
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-
|
|
18
|
+
> 🤖 Machine-assisted translation. The [English README](README.md) is canonical. Last synced: 2026-09-07.
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
21
|
npx mjolnir-qa@latest
|
|
@@ -292,14 +292,14 @@ npx mjolnir-qa@latest --scope changed
|
|
|
292
292
|
|
|
293
293
|
### 이 중 얼마나가 측정되었나
|
|
294
294
|
|
|
295
|
-
**99개 규칙 중
|
|
295
|
+
**99개 규칙 중 78개가 실제 OSS 코드에 대해 측정된 거짓 양성 비율을
|
|
296
296
|
갖습니다** (각 규칙당 손으로 분류된 발견 ≥ 10건;
|
|
297
|
-
[docs/FP-AUDIT.md](docs/FP-AUDIT.md) 참조). 나머지
|
|
297
|
+
[docs/FP-AUDIT.md](docs/FP-AUDIT.md) 참조). 나머지 21개는 저자의 추정으로
|
|
298
298
|
출시됩니다. 모든 스캔의 바닥글은 _발화한_ 규칙 중 몇 개가 측정되었는지
|
|
299
299
|
말해줍니다; `mjolnir rules --unmeasured`는 측정되지 않은 것들을 나열합니다;
|
|
300
300
|
각 규칙의 `mjolnir explain` 페이지는 그 상태를 명시합니다. 수치가 흉해도
|
|
301
301
|
우리는 비율을 공개합니다 — QA-CS-103은 95%로 감사되었고 그래서 격리
|
|
302
|
-
계층에 있습니다. 그
|
|
302
|
+
계층에 있습니다. 그 숫자를 늘려가는 것이 프로젝트의 지속적인 작업입니다.
|
|
303
303
|
|
|
304
304
|
### 규칙 계층과 언어 성숙도
|
|
305
305
|
|
|
@@ -447,14 +447,14 @@ flakiness 보고서를 만들지는 않습니다.
|
|
|
447
447
|
발견할 수 있습니다; 그러나 검증 시스템 전체가 신뢰할 만하다는 증명은
|
|
448
448
|
하지 못합니다 — 그리고 보여주는 diff만 볼 뿐입니다.
|
|
449
449
|
|
|
450
|
-
| | AI 코드 리뷰 (Copilot 등) |
|
|
451
|
-
| -------------------------------- | :----------------------------: |
|
|
452
|
-
| 스캔당 비용 | 토큰 (diff 크기에 비례해 증가) |
|
|
453
|
-
| 전체 스위트 + 모든 CI 설정을 봄 | 당신이 보여준 PR diff만 |
|
|
454
|
-
| 결정론적 (같은 입력 → 같은 출력) | ❌ (비결정론적) |
|
|
455
|
-
| 수개월 잠들어 있던 패턴을 잡음 | 컨텍스트에 있을 때만 |
|
|
456
|
-
| 실행 사이에 발견을 기억 | ❌ (세션 간 기억 없음) |
|
|
457
|
-
| 사람의 트리거 없이 실행 | PR이나 프롬프트가 필요 |
|
|
450
|
+
| | AI 코드 리뷰 (Copilot 등) | **Mjölnir** |
|
|
451
|
+
| -------------------------------- | :----------------------------: | :---------------------------: |
|
|
452
|
+
| 스캔당 비용 | 토큰 (diff 크기에 비례해 증가) | **제로** (로컬, 설치됨) |
|
|
453
|
+
| 전체 스위트 + 모든 CI 설정을 봄 | 당신이 보여준 PR diff만 | **매번 모든 것** |
|
|
454
|
+
| 결정론적 (같은 입력 → 같은 출력) | ❌ (비결정론적) | **✅** |
|
|
455
|
+
| 수개월 잠들어 있던 패턴을 잡음 | 컨텍스트에 있을 때만 | **✅** (모든 파일을 스캔) |
|
|
456
|
+
| 실행 사이에 발견을 기억 | ❌ (세션 간 기억 없음) | **✅** (baseline + diff) |
|
|
457
|
+
| 사람의 트리거 없이 실행 | PR이나 프롬프트가 필요 | **✅** (CI 훅, 몇 초 내 실행) |
|
|
458
458
|
|
|
459
459
|
**둘 다 사용하세요.** AI는 어떤 정규식도 찾을 수 없는 뉘앙스, 의도,
|
|
460
460
|
설계 결함을 잡아냅니다. Mjölnir는 "의도적인" 것처럼 보여서 AI가 놓치는
|
|
@@ -573,10 +573,18 @@ JSON/SARIF 보고서는 `schemaVersion: 1`입니다. 규칙 ID (`QA-<FAMILY>-NNN
|
|
|
573
573
|
규칙만이 헤드라인 계층에 출시됩니다 ([이 중 얼마나가 측정되었나](#이-중-얼마나가-측정되었나)
|
|
574
574
|
참조); 스캔 바닥글과 `mjolnir rules --unmeasured`가 어느 것이 어느 것인지
|
|
575
575
|
알려줍니다.
|
|
576
|
-
- **플러그인
|
|
576
|
+
- **플러그인 신뢰 및 실행 게이트** — 플러그인은 `"plugins"` 아래 선언된
|
|
577
|
+
npm 패키지입니다; JS 모듈은 `mjolnir-rules/*.mjs`에 위치합니다.
|
|
577
578
|
**샌드박스가 없습니다**: 플러그인 코드는 완전한 Node 권한으로
|
|
578
|
-
실행되며, ESLint나 Vitest 플러그인과 같은 신뢰 모델입니다.
|
|
579
|
-
|
|
579
|
+
실행되며, ESLint나 Vitest 플러그인과 같은 신뢰 모델입니다. 그렇기
|
|
580
|
+
때문에 코드 실행은 **매 스캔마다 옵트인**입니다: `--enable-plugins`를
|
|
581
|
+
전달하거나(`MJOLNIR_ENABLE_PLUGINS=1` 설정) 그렇지 않으면 해당 소스는
|
|
582
|
+
로드되지 않습니다 — 시끄러운 stderr 알림이 건너뛴 항목을 정확히
|
|
583
|
+
나열합니다. 신뢰할 수 없는 코드를 스캔하는 것이 그 코드를 실행하지는
|
|
584
|
+
않습니다. JSON 규칙 매니페스트(`mjolnir-rules/*.json`)는 영향을 받지
|
|
585
|
+
않습니다: 정규식 패턴을 선언하며 설계상 코드를 실행하지 않습니다.
|
|
586
|
+
코어 규칙 ID 접두사는 예약되어 있고 사칭 방지를 위해 플러그인과 외부
|
|
587
|
+
규칙으로부터 거부됩니다.
|
|
580
588
|
- **워크스페이스 로컬 외부 규칙** (폴더 기반, 네트워크 제로) — 스캔 대상
|
|
581
589
|
옆의 `mjolnir-rules/` 디렉터리가 사용자 정의 규칙을 로드합니다: JSON
|
|
582
590
|
파일은 정규식 패턴을 선언하고 (코드는 실행되지 않음), `.mjs`/`.js`
|