سود:
- امکان استفاده از هوش مصنوعی به عنوان فیلتر بررسی اولیه با دسته ها و برچسب های شدت
- توانایی فیلتر کردن یافته ها با ذهن انسان برای تأیید / مثبت کاذب / اعمال
- توانایی اجرای الزامات تایید انسانی در قوانین تجاری، معماری و تصمیمات حیاتی امنیتی
بررسی کد زمانی است که یک تغییر نوشته شده توسط یک توسعه دهنده قبل از ادغام توسط شخص دیگری بررسی می شود. بررسی خوب؛ اشکالات را زود تشخیص می دهد، اطلاعات را به اشتراک می گذارد و پایه کد را ثابت نگه می دارد. اما مرورها خسته کننده هستند، مستعد حواس پرتی هستند و تحت فشار زمان سطحی می شوند. هوش مصنوعی در اینجا یک دستیار دوگانه است: به شما این امکان را می دهد که هم کد خود را که برای بررسی ارسال می کنید از قبل تمیز کنید و هم PR (درخواست کشش) شخص دیگری را با چشمی دقیق تر بررسی کنید.
تمایز اساسی این است: هوش مصنوعی بررسی را سرعت می بخشد و آن را افزایش می دهد، اما نمی تواند مسئولیت تایید را بر عهده بگیرد. جمله "هوش مصنوعی نگاه کرد، تمیز است" تایید نیست. تصمیم نهایی "ادغام" بر عهده مهندس است که کد و زمینه را می داند.
در بررسی چه چیزی هوش مصنوعی خوب و بد است
خوب برای موارد: عدم بررسی تهی، نشت منابع (فایل/لینک باز باقی مانده)، استثناهای نامشخص، شرایط بدیهی اشتباه (>= به جای >)، تغییر نام پیشنهادها، خوانایی، حذف حاشیه، بوهای امنیتی ساده (مانند الحاق رشته SQL)، تشخیص کد تکراری.
نقاط ضعف: نقایص عمیقی که قوانین کسب و کار شما را نقض می کنند، اما به زمینه و زمان نیاز دارند، مانند منطق صحیح نحوی، انطباق با معماری، تنگناهای عملکرد واقعی، خطاهای همزمانی. هوش مصنوعی همچنین مثبت کاذب (به اشتباه گرفتن چیزی که در واقع مشکلی نیست با یک مشکل) و منفی کاذب (از دست دادن اشکال واقعی) تولید می کند. بنابراین خروجی آن «فهرست احتیاط» است نه حکم قطعی.
احتیاط: فقط به این دلیل که هوش مصنوعی می گوید "مشکلی نیست" درست بودن کد را ثابت نمی کند. منفی های کاذب ساکت هستند. خطرناک ترین اشتباهات آنهایی هستند که هرگز در بررسی ذکر نشده اند.
مراحل بررسی سیستماتیک
- زمینه را بیان کنید. هدف از تغییر، موضوع مربوطه و معیارهای پذیرش، در صورت وجود، را به درخواست اضافه کنید. بررسی بی هدف تفسیری بی هدف ایجاد می کند.
- آن را به دسته ها تقسیم کنید. از مدل بخواهید یافته ها را به عنوان «اشکال/امنیت/عملکرد/خوانایی/سبک» طبقه بندی کند. بنابراین شما بحرانی را از نویز جدا می کنید.
- درخواست برچسب شدت به هر یافته یک رتبه "بالا/متوسط/کم" بدهید و "علت" و "اصلاح توصیه شده" را در آن بگنجانید.
- آن را با چشمان خود فیلتر کنید. هر یافته را ارزیابی کنید: آیا واقعی است (تأیید کنید)، آیا مثبت کاذب است (توجیه بنویسید)، آیا چیزی کم است (دانش خود را اضافه کنید).
- مسیرهای بحرانی را به صورت دستی بررسی کنید. مسیرهایی که شامل پول، هویت، مجوز و حذف دادهها میشوند را خودتان بدون اتکا به هوش مصنوعی بخوانید و اجرا کنید.
سه کیف کوچک
مورد 1 - خطای تهی بی صدا کشف شد. یک تیم یک PR 380 خطی را پیشبازبینی هوش مصنوعی داشت. این مدل راهی را علامت گذاری کرد که در آن یک پاسخ سرویس خارجی می تواند تهی شود، اما هیچ بررسی برای این موضوع در کد انجام نشد. بازبین انسانی این مسیر را تأیید کرد و یک چک تهی اضافه کرد. خطای مشابه باعث وقفه 2 ساعته در تولید در سه ماهه قبل شد.
مورد 2 - حذف مثبت کاذب. هوش مصنوعی یک "مشکل احتمالی عملکرد" را در یک حلقه علامت گذاری کرد. بازبین این را به عنوان یک مثبت کاذب بسته است، زیرا میدانست که حلقه فقط با حداکثر ۵ عنصر کار میکند (حلقهای روی یک enum است). این مدل که زمینه را نمی دانست، هشدار داد. فردی که زمینه را می دانست تصمیم درستی گرفت.
مورد 3 - AI خطای قانون تجارت را از دست داده است. در حالی که طبق قانون کمپین یک حساب تخفیف باید حداکثر 30٪ باشد، کد 50٪ مجاز است. هوش مصنوعی هرگز متوجه این خطای منطقی کامل از لحاظ نحوی نشد. چون قانون را نمی دانست این اشکال در بررسی توسط مالک محصول که معیارهای پذیرش را میدانست، شناسایی شد. درس: اعتبار سنجی قوانین کسب و کار یک شغل انسانی است.
چهار قالب قابل کپی
بررسی هدفمند و طبقه بندی شده:
نقش: بررسی دقیق کد. هدف از تغییر: {{purpose / issue}}این تفاوت را مرور کنید. یافتهها را در این دستهها ارائه کنید: [اشکال] [امنیت] [عملکرد] [خوانایی] [سبک]. برای هر یافته: فایل: ردیف، شدت (بالا/متوسط/کم)، علت، رفع توصیه شده. اگر مطمئن نیستید، "ممکن" را علامت بزنید. شما قوانین تجارت را نمی دانید. از من در مورد مکان هایی که نیاز به قوانین دارند بپرسید.{{تفاوت}}
برای آماده شدن برای بررسی کد خود:
قبل از باز کردن روابط عمومی، این تغییر را مرور کنید. به دنبال موارد زیر باشید. یافته ها را به ترتیب اولویت فهرست کنید؛ پیشنهاد اصلاح 1 خط برای هر کدام.{{code}}
شکار لبه مورد:
ورودی ها و موقعیت هایی را که ممکن است این تابع خراب شود فهرست کنید: خالی، تهی، خیلی بزرگ، منفی، تماس همزمان، خطای شبکه، داده جزئی. برای هر مورد، رفتار مورد انتظار و اینکه کد فعلی چه کاری انجام می دهد را بنویسید.{{function}}
اسکن بوی امنیتی (پیش غربالگری):
به دنبال بوهای امنیتی رایج در این کد بگردید: الحاق SQL/command، ورودی نامعتبر، راز جاسازی شده تغییرناپذیر، deserialize ناامن، عدم بررسی امتیازات. یافته ها را به «قطع / محتمل / دانش» تفکیک کنید. این یک غربالگری اولیه است. حکم قطعی نیست.{{کد}}
اعلان ضعیف / اعلان قوی
ضعیف: "آیا اشتباهی در این روابط عمومی وجود دارد؟"
قوی: "هدف: اضافه کردن تخفیف کوپن به کل سبد خرید (تخفیف نباید بیش از 30٪ باشد - شما نمی توانید این قانون را خودتان تأیید کنید، فقط به من بگویید اگر کد محدودیت بالایی را اعمال می کند).
نسخه قوی به وضوح قصد، قانون تجاری و مرز هوش مصنوعی را بیان می کند. بنابراین، یافتههای مفید میآیند و ناحیه ناشناخته برای مدل روشن میماند.
پیدا کردن نوع
قابلیت اطمینان هوش مصنوعی
نقش مرد
بررسی تهی/خطا وجود ندارد
بالا
تایید و اعمال کنید
خوانایی/سبک
بالا
بر اساس اولویت انتخاب کنید
بوی امنیتی ساده
متوسط
نهایی کردن، اسکن با وسیله نقلیه
رعایت قوانین تجاری
پایین
این کاملا انسانی است.
همزمانی/معماری
پایین
بررسی کارشناسی لازم است
بررسی هوش مصنوعی جایگزینی برای بررسی انسانی نیست
بررسی هوش مصنوعی را به عنوان "اولین فیلتر" قرار دهید: یک پاس اولیه ارزان، سریع و خستگی ناپذیر. این فیلتر توجه بازبین انسانی را از جزئیات بیاهمیت (یک فضا، یک نام) رها میکند و آن را به مکانهایی هدایت میکند که واقعاً نیاز به تفکر دارند - قانون تجارت، معماری، نتیجه امنیتی. اما تایید ادغام امضای یک فرد پاسخگو در تیم است. بررسی مستقل توسط حداقل یک مهندس ذیصلاح برای تغییرات حیاتی ایمنی الزامی است.
نکته: فهرست یافتههایی را که هوش مصنوعی تولید میکند بهعنوان «چیزهایی برای بررسی» به جای «برای انجام» بخوانید. یا هر مورد را تأیید و اعمال کنید یا در یک جمله بنویسید که چرا آن را تصویب کردید. این ردیابی بررسی را قابل ممیزی می کند.
اشتباهات رایج
- این به معنای "هوش مصنوعی به نظر می رسد، تمیز است". این یک حس اعتماد به نفس کاذب به دلیل منفی کاذب است.
- زمینه ندادن بدون هدف و معیارهای پذیرش، مدل تنها تفاسیر سبک سطحی را تولید می کند.
- اعمال کورکورانه مثبت کاذب رفع هر هشدار مدل می تواند کدهای در حال اجرا را خراب کند.
- پرسیدن از مدل در مورد قانون تجارت. مدل قانون را نمی داند; بررسی آن بر عهده انسان است.
- علیه خشونت تبعیض قائل نشوید. قرار دادن یک یافته امنیتی مهم و یک پیشنهاد نام در یک کیف، آنچه مهم است را تحت الشعاع قرار می دهد.
به طور خلاصه
هوش مصنوعی اولین فیلتر خستگی ناپذیر در بررسی کد است: خطاهای پوچ/خطا، موارد لبه و بوی امنیتی ساده را به خوبی تشخیص می دهد. اما در مورد نقص های مستلزم زمینه مانند قوانین تجاری، معماری و همزمانی ضعیف است و هم مثبت کاذب و هم منفی کاذب تولید می کند. یافته ها را بر اساس طبقه بندی و شدت درخواست کنید، هر کدام را با هوش انسانی فیلتر کنید، مسیرهای حیاتی را به صورت دستی تأیید کنید. تایید همیشه امضای یک مهندس پاسخگو است.
وظیفه کاربردی
یک PR/تفاوت واقعی یا اخیر را انتخاب کنید. ابتدا از هوش مصنوعی بخواهید که آن را با الگوی "بررسی دسته بندی هدف گرا" بررسی کند. یافتهها را در یک جدول قرار دهید و برای هر یک تصمیم بگیرید: درست (من تأیید کردم)، مثبت نادرست (در اینجا استدلال من است)، یا باید اجرا شود. سپس خودتان به گشت و گذار بپردازید و سعی کنید حداقل یک مورد (مخصوصاً یک قانون تجاری یا یک مورد لبه) را که هوش مصنوعی گم شده است پیدا کنید و آن را یادداشت کنید.
چک لیست
- [ ] من از بررسی هوش مصنوعی به عنوان اولین فیلتر استفاده می کنم، نه یک تأیید.
- [ ] من هدف و معیارهای پذیرش را به درخواست بررسی اضافه می کنم.
- [ ] من یافته ها را از نویز بر اساس دسته بندی و به شدت خواستن آنها جدا می کنم.
- [ ] من آگاهانه هر یافته را برای تأیید / نادرست مثبت / اعمال فیلتر می کنم.
- [ ] من به عنوان یک انسان، قوانین تجاری و انطباق با معماری را بررسی می کنم.
- [ ] برای تغییرات حیاتی ایمنی به تأییدیه یک مهندس واجد شرایط نیاز دارم.