
تعداد نشریات | 45 |
تعداد شمارهها | 1,412 |
تعداد مقالات | 17,361 |
تعداد مشاهده مقاله | 55,975,096 |
تعداد دریافت فایل اصل مقاله | 18,184,358 |
کشف خودکار باگهای برنامه با استفاده از تبدیلات مدل و یادگیری عمیق | ||
مجله مهندسی برق دانشگاه تبریز | ||
مقالات آماده انتشار، اصلاح شده برای چاپ، انتشار آنلاین از تاریخ 11 مرداد 1403 اصل مقاله (1006.23 K) | ||
نوع مقاله: علمی-پژوهشی | ||
شناسه دیجیتال (DOI): 10.22034/tjee.2024.57018.4645 | ||
نویسندگان | ||
لیلا یوسفوند1؛ سیف اله سلیمانی* 2؛ سجاد اسفندیاری3 | ||
1استادیار، گروه مهندسی کامپیوتر، دانشگاه لرستان، خرم آباد، ایران | ||
2دانشیار، گروه مهندسی کامپیوتر، دانشگاه اراک، اراک، ایران | ||
3استادیار، گروه مهندسی کامپیوتر، دانشگاه ملایر، ملایر، ایران. | ||
چکیده | ||
در سالهای اخیر، تکنیکهای شناسایی باگ نرمافزاری بهطور گستردهای توسط توسعهدهندگان برنامهها مورد استفاده قرار گرفتهاند تا کیفیت کد را بهبود بخشیده و از پایداری آن اطمینان حاصل کنند. یکی از محبوبترین روشها، تحلیل ایستا (Static Analysis) است که بر پایهی الگو عمل میکند. در این تکنیکها، الگوهای شناسایی باگ بهصورت دستی توسط کارشناسان طراحی میشوند تا خطاهای شناختهشده را تشخیص دهند. با وجود تلاشهای گسترده برای ایجاد مجموعهای بزرگ از الگوها برای انواع مختلف باگها، هنوز هم باگهای زیادی وجود دارند که از تمام فیلترهای موجود عبور میکنند و شناسایی نمیشوند. در پاسخ به این محدودیت، این مقاله روشی جدید برای شناسایی خودکار باگ در کدهای جاوااسکریپت ارائه میدهد. رویکرد پیشنهادی شامل نگاشت کدهای دارای باگ و بدون باگ به ساختارهای گرافی است. سپس این گرافها به یک مدل یادگیری عمیق داده میشوند که برای طبقهبندی کدها به دو دستهی دارای باگ و بدون باگ آموزش دیده است. توانایی مدل در کار با دادههای گرافی به آن امکان میدهد تا روابط پیچیدهتری را در ساختار کد تشخیص دهد. علاوه بر این، این رویکرد قابلیت سازگاری با باگهای جدید و ناشناخته را نیز دارد که باعث افزایش پایداری و اثربخشی آن میشود. نتایج ارزیابی نشان میدهند که این روش میتواند دامنهی وسیعتری از باگها را شناسایی کند و از نظر دقت و پوشش عملکرد بهتری نسبت به روشهای پیشین دارد. | ||
کلیدواژهها | ||
کشف باگ؛ یادگیری عمیق؛ طبقهبندی گرافها؛ شبکههای کانولوشن؛ درخت خلاصه نحوی (AST) | ||
مراجع | ||
[1] Caitlin Sadowski, Jeffrey van Gogh, Ciera Jaspan, Emma Söderberg, and Collin Winter. “Tricorder: Building a program analysis ecosystem”. In Proceedings of the 37th International Conference on Software Engineering, 2015. [2] Andrew Scott, Johannes Bader, and Satish Chandra. “Getafix: Learning to fix bugs automatically”. In Proceedings of the ACM on Programming Languages. 2019. [3] Miltiadis Allamanis, Marc Brockschmidt, and Mahmoud Khademi. “Learning to represent programs with graphs”. International Conference on Learning Representations, 2018. [4] Michael Pradel and Koushik Sen. “Deepbugs: A learning approach to name-based bug detection”. ACM Program. Lang, 2(OOPSLA), 2018. [5] Edward Aftandilian, Raluca Sauciuc, Siddharth Priya, and Sundaresan 2012. “Building Useful Program Analysis Tools Using an Extensible Java Compiler”. In 12th IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2012, Riva del Garda, Italy, September 23-24, 2012. 14–23. [6] David Hovemeyer and William Pugh. “Finding bugs is easy”. In Companion to the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM, 132–136, 2004. [7] Yousofvand, S. Soleimani and V. Rafe, “Automatic bug localization using a combination of deep learning and model transformation through node classification”, Software Quality Journal, 2023. [8] Andrew Rice, Edward Aftandilian, Ciera Jaspan, Emily Johnston, Michael Pradel. “Detecting Argument Selection Defects”. In OOPSLA, 2017. [9] Xiaodong Gu, Hongyu Zhang, Dongmei Zhang, and Sunghun Kim. “Deep API learning”. In Proceedings of the 24th ACM SIGSOFT International Symposium on Foundations of Software Engineering, FSE 2016, Seattle, WA, USA, November 13-18, 2016. 631–642. [10] Rahul Gupta, Soham Pal, Aditya Kanade, and Shirish Shevade.. “DeepFix: Fixing Common C Language Errors by Deep Learning”. InAAAI, 2017. [11] Sudheendra Hangal and Monica S. Lam.. “Tracking down software bugs using automatic anomaly detection”. In International Conference on Software Engineering (ICSE). ACM, 291–301, 2002. [12] Dawson Engler, David Yu Chen, Seth Hallem, Andy Chou, and Benjamin Chelf.. “Bugs as Deviant Behavior: A General Approach to Inferring Errors in Systems Code”. In Symposium on Operating Systems Principles (SOSP). ACM, 57–72, 2001. [13] Amin Nikanjam, Houssem Ben Braiek, Mohammad Mehdi Morovati, and Foutse Khomh. “Automatic Fault Detection for Deep Learning Programs Using Graph Transformation”. ACM Transactions on Software Engineering and Methodology, 2021. [14] Dinella, H. Dai, Z. Li, M. Naik, L. Song, and K. Wang, “Hoppity: Learning graph transformations to detect and fix bugs in programs”. In International Conference on Learning Representations, 2021. [15] Péter Gyimesi, Béla Vancsics, Andrea Stocco, Davood Mazinanian, Árpád Beszédes, Rudolf Ferenc, Ali Mesbah. “BUGSJS: a benchmark and taxonomy of JavaScript bugs”. Software Testing, Verification and Reliability, e1751,2019. [16] مریم مرادی، رزا یوسفیان، وحید رافع، «ارائه راهکاری جهت مقابله با مشکل انفجار فضای حالت در سیستمهای تبدیل گراف با استفاده از الگوریتمهای پرندگان و جستجوی گرانشی»، مجله مهندسی برق دانشگاه تبریز، جلد 45، شماره 4، صفحات 163-177، 1394.
[17] Darvish and S. Shamekhi, “ A hybrid multi-scale CNN-LSTM deep learning model for the identification of protein-coding regions in DNA sequences”. Tabriz Jornal of Electrival Engineering, 2022. [18] Kipf, T. N., and Welling, M. “Semi-supervised classification with graph convolutional networks”. In The International Conference on Learning Representations (ICLR), 2017. [19] Niepert, M. Ahmed and K. Kutzkov, “Learning convolutional neural networks for graphs”, InProceedings of The 33rd International Conference on Machine Learning, PMLR , 2016. [20] Shervashidze, N.; Schweitzer, P.; Leeuwen, E. J. v.; Mehlhorn, K.and Borgwardt, K. M. “Weisfeiler-lehman graph kernels”. Journal of Machine Learning Research 12(Sep):2539–2561 , 2011. | ||
آمار تعداد مشاهده مقاله: 452 تعداد دریافت فایل اصل مقاله: 28 |