
أمر فرعي لـ Cargo للاختبار العشوائي الموجَّه بالتغطية في Rust باستخدام libFuzzer: إنشاء أهداف الاختبار العشوائي وتشغيلها، وتقليل حالات الفشل والمجموعات، والإبلاغ عن التغطية.
cargo fuzzأمر cargo فرعي للاختبار بالتشويش باستخدام libFuzzer! سهل الاستخدام!
$ cargo install cargo-fuzz
ملاحظة: يتطلب libFuzzer دعم مُعقِّم LLVM (sanitizer)، لذا يعمل هذا فقط على x86-64 و Aarch64،
وفقط على أنظمة التشغيل الشبيهة بيونكس (وليس Windows). يتطلب هذا أيضًا مترجمًا ليليًا (nightly) لأنه يستخدم بعض
خيارات سطر الأوامر غير المستقرة. ستحتاج أيضًا إلى مترجم C++ مع دعم C++11.
cargo fuzz initقم بتهيئة مشروع cargo fuzz لحزمتك!
fuzz إلى workspace.members في Cargo.toml الجذرييمكن أن يكون دليل fuzz إما جزءًا من مساحة عمل موجودة (الافتراضي)
أو يستخدم مساحة عمل مستقلة. إذا كان الأخير مرغوبًا، يمكنك استخدام
cargo fuzz init --fuzzing-workspace=true.
cargo fuzz add <target>أنشئ هدف تشويش جديدًا!
cargo fuzz run <target>شغّل هدف تشويش وابحث عن الأخطاء!
cargo fuzz fmt <target> <input>اطبع مخرجات std::fmt::Debug لحالة اختبار. مفيد عندما يستقبل هدف التشويش
إدخالًا من نوع Arbitrary!
cargo fuzz tmin <target> <input>وجدت إدخالًا مسببًا للفشل؟ صغّره إلى أصغر إدخال يسبب ذلك الفشل لتسهيل التصحيح!
cargo fuzz cmin <target>صغّر مجموعة الإدخالات الخاصة بك!
cargo fuzz coverage <target>أنشئ معلومات التغطية للبرنامج المُختبَر بالتشويش!
يمكنك العثور على التوثيق في كتاب Rust Fuzz.
يمكنك أيضًا دائمًا العثور على خيارات سطر الأوامر الكاملة المتاحة عبر
--help:
$ cargo fuzz --help
تحتوي خزانة الجوائز على قائمة بالأخطاء
التي عثر عليها cargo fuzz (وغيرها). هل عثر cargo fuzz و libFuzzer على خطأ
من أجلك؟ أضفه إلى خزانة الجوائز!
يتم توزيع cargo-fuzz بموجب شروط كلٍّ من رخصة MIT و
رخصة Apache (الإصدار 2.0).
راجع LICENSE-APACHE و LICENSE-MIT للتفاصيل.