إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
مستوى الخطورة : المعلومات
وصف
تكتشف هذه القاعدة متى تستخدم = الجملات الشرطية أو == بدلا من عامل المساواة في PowerShell (-eq). تبحث القاعدة عن استخدامات و === المؤثرات داخل if، elseif، while، و do-while العبارات. في باورشيل، = يمثل عامل التعيين ويمثل -eqعامل مقارنة المساواة.
في العديد من لغات البرمجة، يمثل == عامل مقارنة المساواة. عندما تحدد == في تعبير PowerShell، بما في ذلك العبارات الشرطية، يظهر PowerShell خطأ لأن == صياغة PowerShell غير صالحة. هذه القاعدة دائما ما تشير إلى استخدامات في == العبارات الشرطية. ومع ذلك، لا يعلم الاستخدامات = عندما يستخدم الجانب الأيمن من الشرط أي أوامر أو تعبيرات.
في هذه الحالات، من المحتمل أن يكون استخدام مشغل التعيين مقصودا. غالبا ما يستخدم هذا البناء لتعيين قيمة موجز للمتغير أو الخاصية على الجانب الأيسر والتحقق مما إذا كانت القيمة المعينة تقيم كحقيقة.
المنع الضمني باستخدام نمط Clang
هناك بعض الحالات النادرة التي يكون فيها تعيين متغير داخل جملة if مقصودا.
بدلا من قمع القاعدة، يمكنك الإشارة إلى أن التعيين مقصود عن طريق لف التعبير بين أقواس إضافية. ينطبق الاستثناء عندما $null يستخدم على الجانب الأيسر لأنه لا يوجد حالة استخدام له. على سبيل المثال:
if (($shortVariableName = $SuperLongVariableName['SpecialItem']['AnotherItem'])) {
...
}
مثل
غير متوافق
if ($a = $b)
{
...
}
if ($a == $b)
{
}
متوافقه
if ($a -eq $b) # Compare $a with $b
{
...
}
if ($a = Get-Something) # Only execute action if command returns something and assign result to variable
{
Do-SomethingWith $a
}