Penganalisa statis untuk memindai JavaScript dan kode TypeScript untuk ekspresi reguler yang bermasalah.
Pemindai tersedia sebagai gambar kontainer yang dapat Anda jalankan terhadap proyek JavaScript atau TypeScript apa pun. Misalnya, untuk memindai direktori saat ini:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latestCATATAN: Untuk menggunakan Podman alih -alih Docker, Anda dapat mengganti
dockerolehpodmandalam perintah contoh apa pun.
Jika perlu, Anda dapat mengabaikan file atau direktori tertentu menggunakan --ignore-pattern opsi. Misalnya, mengabaikan kode vendor untuk fokus pada masalah dalam proyek Anda sendiri yang dapat Anda gunakan:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latest
--ignore-pattern vendor/Pemindai memiliki kode keluar berikut.
| Kode Keluar | Arti |
|---|---|
| 0 | Tidak ada masalah yang ditemukan |
| 1 | File dengan ekspresi reguler yang bermasalah ditemukan |
| 2 | Ada yang salah saat memindai |
Jika Anda telah menemukan pemindai ini bermanfaat, pertimbangkan untuk menggunakan ESLINT-PLUGIN-REGEXP sebagai gantinya. Plugin Eslint ini adalah yang memberi kekuatan pada pemindai, dan dapat terintegrasi lebih baik dengan alur kerja proyek Anda yang ada.
Ikuti langkah -langkah ini untuk memperbarui pengaturan Eslint Anda untuk mencakup apa yang dilakukan pemindai ini:
Instal plugin:
npm install --save-dev eslint-plugin-regexpPerbarui Konfigurasi Eslint Anda:
Eslint V9 dengan konfigurasi datar:
import regexp from "eslint-plugin-regexp" ;
// ... other plugins you're already using
export default [
{
files : [ "**/*.{js,jsx,cjs,mjs,ts,cts,mts}" ] ,
plugins : {
regexp ,
} ,
rules : {
"regexp/no-super-linear-backtracking" : [
"error" ,
{
"report" : "certain"
}
] ,
"regexp/no-super-linear-move" : [
"error" ,
{
"ignorePartial" : false ,
"ignoreSticky" : false ,
"report" : "certain"
}
]
}
}
// ... rest of your configuration
] ;Eslint V8 dan Konfigurasi Sebelumnya atau Legacy:
# .eslintrc.yml or similar
plugins :
# ... other plugins you're already using
- regexp
rules :
# ... other rules you already configured
regexp/no-super-linear-backtracking :
- error
- report : certain
regexp/no-super-linear-move :
- error
- ignorePartial : false
ignoreSticky : false
report : certain
# ... rest of your configuration // .eslintrc.json, .eslintrc.js or similar
{
"plugins" : [
// ... other plugins you're already using
"regexp"
] ,
"rules" : {
// ... other rules you already configured
"regexp/no-super-linear-backtracking" : [
"error" ,
{
"report" : "certain"
}
] ,
"regexp/no-super-linear-move" : [
"error" ,
{
"ignorePartial" : false ,
"ignoreSticky" : false ,
"report" : "certain"
}
]
}
// ... rest of your configuration
} Jika Anda mau, Anda dapat membangun pemindai dari awal. Dari akar proyek ini berjalan seperti:
docker build --file Containerfile .Atau gunakan kenyamanan membuat target:
make build ENGINE=dockerPemindai ini bertujuan untuk memberi pengembang alat untuk menemukan ekspresi reguler yang rentan dalam kode mereka. Dengan demikian, tujuannya adalah hanya melaporkan positif yang benar . Hasilnya adalah bahwa semua temuan relevan, tetapi laporan bersih tidak berarti proyek Anda tidak memiliki ekspresi reguler yang rentan.
Ini kontras dengan alat-alat seperti redos-detektor, yang akan menemukan ekspresi reguler yang rentan tidak akan, tetapi juga melaporkan positif palsu . Karena sulit untuk menentukan apakah laporan tertentu adalah positif palsu, alat lain sulit digunakan.
Pemindai ini menjalankan Eslint dengan plugin Eslint-Plugin-RegExp untuk menemukan dan melaporkan ekspresi reguler yang melanggar aturan dengan implikasi keamanan.
Dukungan TypeScript disediakan oleh @typescript-eslint/parser, dukungan markdown disediakan oleh @eslint/markdown.
Proyek ini dilisensikan di bawah lisensi Apache 2.0, lihat lisensi untuk teks lisensi lengkap. Teks dokumentasi dilisensikan berdasarkan CC BY-SA 4.0.
Harap buka masalah jika Anda menemukan kesalahan atau jika Anda memiliki saran untuk bagaimana meningkatkan dokumentasi.