C++ နှင့် C ဘာသာစကားများအတွက် static code analysiser cppcheck 2.6 ကို ထုတ်ဝေသည်။

ထည့်သွင်းထားသော စနစ်များအတွက် ပုံမှန်မဟုတ်သော စံမဟုတ်သော အထားအသိုကို အသုံးပြုသည့်အခါ အပါအဝင် C နှင့် C++ ဘာသာစကားများတွင် ကုဒ်အမှားအယွင်းများကို ခွဲခြားသတ်မှတ်နိုင်စေမည့် static code analyzer cppcheck 2.6 ၏ ဗားရှင်းအသစ်ကို ထုတ်ပြန်လိုက်ပါသည်။ cppcheck ကို အမျိုးမျိုးသော ဖွံ့ဖြိုးတိုးတက်မှု၊ စဉ်ဆက်မပြတ် ပေါင်းစပ်မှုနှင့် စမ်းသပ်မှုစနစ်များနှင့် ပေါင်းစပ်ထားပြီး ကုဒ်ပုံစံနှင့် လိုက်လျောညီထွေရှိမှုကို စစ်ဆေးခြင်းကဲ့သို့သော အင်္ဂါရပ်များကို ပံ့ပိုးပေးသည့် plugins အစုအဝေးကို ပံ့ပိုးပေးပါသည်။ ကုဒ်ကို ခွဲခြမ်းစိတ်ဖြာရန်၊ သင်သည် သင်၏ကိုယ်ပိုင် ခွဲခြမ်းစိတ်ဖြာမှု သို့မဟုတ် Clang မှ ပြင်ပခွဲခြမ်းစိတ်ဖြာမှုကို အသုံးပြုနိုင်သည်။ ၎င်းတွင် Debian ပက်ကေ့ဂျ်များအတွက် ပူးပေါင်းကုဒ်ပြန်လည်သုံးသပ်ခြင်းလုပ်ငန်းကို လုပ်ဆောင်ရန် ဒေသတွင်းအရင်းအမြစ်များကို ပံ့ပိုးပေးရန်အတွက် donate-cpu.py script လည်း ပါဝင်သည်။ ပရောဂျက်၏ အရင်းအမြစ်ကုဒ်ကို GPLv3 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

cppcheck ၏ ဖွံ့ဖြိုးတိုးတက်မှုသည် သတ်မှတ်မထားသော အမူအကျင့်များနှင့် ဆက်စပ်နေသော ပြဿနာများကို ခွဲခြားသတ်မှတ်ခြင်းနှင့် ဘေးကင်းသော ရှုထောင့်မှ အန္တရာယ်ရှိသော ဒီဇိုင်းများကို အသုံးပြုခြင်းအပေါ် အာရုံစိုက်သည်။ ပန်းတိုင်သည် မှားယွင်းသော အပြုသဘောဆောင်မှုများကို လျှော့ချရန်လည်းဖြစ်သည်။ ဖော်ထုတ်ထားသော ပြဿနာများထဲတွင်- မရှိသော အရာများကို ညွှန်ပြခြင်း၊ သုညဖြင့် ပိုင်းခြားခြင်း၊ ကိန်းပြည့်များလျှံတက်ခြင်း၊ မမှန်သော ဘစ်ပြောင်းမှု လုပ်ဆောင်ချက်များ၊ မှားယွင်းသော ပြောင်းလဲမှုများ၊ မှတ်ဉာဏ်ဖြင့် လုပ်ဆောင်သည့်အခါ ပြဿနာများ၊ STL အသုံးပြုမှု မှားယွင်းခြင်း၊ null pointer dereferences၊ အမှန်တကယ် ဝင်ရောက်ပြီးနောက် စစ်ဆေးမှုများ အသုံးပြုခြင်း ကြားခံသို့၊ ကြားခံ ကျော်လွန်မှုများ၊ uninitialized variables များကို အသုံးပြုခြင်း။

ဗားရှင်းအသစ်တွင်-

  • အောက်ပါစစ်ဆေးမှုများကို ခွဲခြမ်းစိတ်ဖြာသူအူတိုင်တွင် ထည့်သွင်းထားသည်။
    • function body တွင် return operator မရှိခြင်း၊
    • ထပ်နေသည့်ဒေတာကို မှတ်တမ်းတင်သည်၊ သတ်မှတ်မထားသော အပြုအမူကို ဆုံးဖြတ်သည်၊
    • နှိုင်းယှဉ်ထားသည့်တန်ဖိုးသည် အမျိုးအစား၏တန်ဖိုးကိုကိုယ်စားပြုခြင်းအပြင်၊
    • copy optimization သည် return std::move(local);
    • မတူညီသော စမ်းချောင်းများ (stream) တွင် စာဖတ်ခြင်းနှင့် စာရေးခြင်းအတွက် ဖိုင်ကို တစ်ပြိုင်နက် ဖွင့်၍မရပါ။
  • Unix ပလပ်ဖောင်းများအတွက်၊ မတူညီသောအရောင်များဖြင့် ရောဂါရှာဖွေရေးစာတိုများကိုပြသရန် ပံ့ပိုးမှုထပ်ဖြည့်ထားသည်။
  • ValueFlow အတွက် ထပ်လောင်းသင်္ကေတခွဲခြမ်းစိတ်ဖြာခြင်း။ အမည်မသိကိန်းရှင်နှစ်ခုကြား ခြားနားချက်ကို တွက်ချက်ရာတွင် ရိုးရှင်းသော မြစ်ဝကျွန်းပေါ်ကို အသုံးပြုသည်။
  • တိုကင်များစာရင်း "define" အတွက်သုံးသော စည်းမျဉ်းများသည် #include နှင့်လည်း ကိုက်ညီနိုင်သည်။
  • စာကြည့်တိုက် tag ယခု tag တစ်ခုပါရှိသည်။ နှင့် std::size, std::empty, std::begin, std::end အစရှိသည့် ကွန်တိန်နာများကို လက်ခံနိုင်သည့် အခမဲ့လုပ်ဆောင်ချက်များနှင့်အညီ၊ connectors အတွက် yeld သို့မဟုတ် action ကို သတ်မှတ်နိုင်သည်။
  • စာကြည့်တိုက် tag ယခု tag တစ်ခုပါရှိသည်။ ထူးခြားသောပိုင်ဆိုင်မှုရှိသော စမတ်ကျသောညွှန်ပြသူများအတွက်။ ဤစမတ်ညွှန်ပြချက်အမျိုးအစားများအတွက် dangling ရည်ညွှန်းချက်များအကြောင်း သတိပေးချက်ကို ယခုထုတ်ပြန်လိုက်ပြီဖြစ်သည်။
  • —cppcheck-build-dir ကန့်သတ်ဘောင်ကို လုပ်ဆောင်ရာတွင် ပြဿနာများကို ဖြေရှင်းပေးသည်။
  • htmlreport သည် ယခုအခါ စာရေးသူနှင့်ပတ်သက်သည့် အချက်အလက်များကို ပြသနိုင်ပြီ (git အပြစ်တင်ခြင်းကို အသုံးပြု)။
  • အဆက်မပြတ်မဟုတ်သော ကိန်းရှင်များအကြောင်း တိုးချဲ့သတိပေးချက်များ၊
  • ခွဲခြမ်းစိတ်ဖြာသူ၏ စုစည်းထားသော အမှားအယွင်းများနှင့် ချို့ယွင်းချက်များကို ပြုပြင်ပြီးဖြစ်သည်။

ထို့အပြင်၊ ပြင်ဆင်ချက် 2012 နှင့် ပြင်ဆင်ချက် 1 အပါအဝင် Misra C 2 မှ စစ်ဆေးမှုများသည် စည်းမျဉ်း 1.1၊ 1.2 နှင့် 17.3 တို့မှလွဲ၍ အပြည့်အဝအကောင်အထည်ဖော်ခဲ့သည်။ စစ်ဆေးမှု 1.1 နှင့် 1.2 ကို compiler မှ လုပ်ဆောင်ရပါမည်။ Verification 17.3 ကို GCC ကဲ့သို့သော compiler တစ်ခုမှ လုပ်ဆောင်နိုင်ပါသည်။

source: opennet.ru

မှတ်ချက် Add