ShellCheck 0.9 သည် shell scripts များအတွက် static analysiser တစ်ခုဖြစ်သည်။

ShellCheck 0.9 ပရောဂျက်ကို ထုတ်ဝေခဲ့ပြီး၊ bash၊ sh၊ ksh နှင့် dash ၏အင်္ဂါရပ်များကိုထည့်သွင်းစဉ်းစားကာ scripts များတွင်အမှားများကိုခွဲခြားသတ်မှတ်ခြင်းကိုပံ့ပိုးပေးသည့် shell scripts များ၏တည်ငြိမ်သောခွဲခြမ်းစိတ်ဖြာမှုအတွက်စနစ်တစ်ခုကိုဖန်တီးထားသည်။ ပရောဂျက်ကုဒ်ကို Haskell ဖြင့် ရေးသားထားပြီး GPLv3 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။ အစိတ်အပိုင်းများကို Vim၊ Emacs၊ VSCode၊ Sublime၊ Atom နှင့် GCC-သဟဇာတ အမှားအယွင်းအစီရင်ခံခြင်းကို ပံ့ပိုးပေးသည့် အမျိုးမျိုးသောဘောင်များနှင့် ပေါင်းစပ်ရန်အတွက် အစိတ်အပိုင်းများကို ထောက်ပံ့ပေးထားပါသည်။

ShellCheck 0.9 သည် shell scripts များအတွက် static analysiser တစ်ခုဖြစ်သည်။

၎င်းသည် ကုဒ်တွင် အထားအသိုအမှားနှစ်ခုစလုံးကို ခွဲခြားသတ်မှတ်ခြင်းအား ပံ့ပိုးပေးသည်၊ ၎င်းသည် လုပ်ဆောင်သည့်အချိန်တွင် စကားပြန်မှ အမှားအယွင်းတစ်ခုပြသခြင်းဆီသို့ ဦးတည်စေပြီး၊ လုပ်ဆောင်မှုအား အနှောင့်အယှက်မဖြစ်စေသော်လည်း script ၏ လုပ်ဆောင်ချက်များတွင် ကွဲလွဲချက်များ ဖြစ်ပေါ်ခြင်းကြောင့် အဓိပ္ပါယ်သက်ရောက်သည့် ပြဿနာများကို ဖော်ထုတ်ပေးပါသည်။ ခွဲခြမ်းစိတ်ဖြာသူသည် အချို့သောအခြေအနေများတွင် ကျရှုံးမှုများဆီသို့ ဦးတည်သွားစေနိုင်သည့် ပိတ်ဆို့မှုများ၊ သိသာထင်ရှားသောမဟုတ်သော ပြဿနာများနှင့် ပြဿနာများကို ဖော်ထုတ်နိုင်သည်။

ရှာဖွေတွေ့ရှိထားသော အမှားအယွင်းများ၏ အတန်းများထဲတွင်၊ အထူးဇာတ်ကောင်များကို ဖြတ်ကျော်ကာ ၎င်းတို့ကို ကိုးကားချက်များဖြင့် ဘောင်သွင်းခြင်းဆိုင်ရာ ပြဿနာများ၊ အခြေအနေဆိုင်ရာ အသုံးအနှုန်းများတွင် အမှားအယွင်းများ၊ ညွှန်ကြားချက်များကို မှားယွင်းစွာ အသုံးပြုခြင်း၊ အချိန်နှင့် ရက်စွဲများကို လုပ်ဆောင်ခြင်းဆိုင်ရာ ပြဿနာများနှင့် စတင်သူများအတွက် ပုံမှန် syntax အမှားများကို ကျွန်ုပ်တို့ မှတ်သားနိုင်ပါသည်။ ဥပမာအားဖြင့်၊ “[[$foo==0 ]]” ကို နှိုင်းယှဉ်သောအခါ နေရာလွတ်မရှိခြင်း၊ “var = 42” သို့မဟုတ် “$foo=42” ကို သတ်မှတ်သောအခါတွင် နေရာလွတ်များ ရှိနေခြင်း၊ “ပဲ့တင်သံ $1” ကိုးကားမပါဘဲ၊

ထို့အပြင်၊ ၎င်းသည် ကုဒ်စတိုင်ကို ပိုမိုကောင်းမွန်စေရန်၊ သယ်ဆောင်ရလွယ်ကူသော ပြဿနာများကို ဖယ်ရှားပေးပြီး scripts များ၏ ယုံကြည်စိတ်ချရမှုကို တိုးမြှင့်ရန်အတွက် အကြံပြုချက်များကို ပံ့ပိုးပေးပါသည်။ ဥပမာအားဖြင့်၊ “echo $[1+2]” အစား syntax “$((..))” ကို အသုံးပြုရန် အဆိုပြုမည်ဖြစ်ပြီး၊ တည်ဆောက်မှု 'rm -rf “$STEAMROOT/”*' ကို မလုံခြုံဟု အမှတ်အသားပြုပါမည်။ variable သည် $STEAMROOT ကို မဖြည့်ပါက root directory ကို ဖျက်နိုင်စွမ်းရှိပြီး "echo {1..10}" ကို အသုံးပြုခြင်းသည် dash နှင့် sh နှင့် ကိုက်ညီမှုမရှိဟု မီးမောင်းထိုးပြပါမည်။

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

  • 'local readonly foo' ကဲ့သို့သော အသုံးအနှုန်းများအတွက် သတိပေးချက် ထပ်ထည့်ထားသည်။
  • မရရှိနိုင်သော ညွှန်ကြားချက်များအကြောင်း သတိပေးချက် ထပ်ထည့်ထားသည်။
  • 'declare x=1 y=$x' သို့ နောက်ခံလင့်ခ်များအကြောင်း သတိပေးချက် ထပ်ထည့်ထားသည်။
  • $ ရှိရင်သတိပေးတယ်? echo၊ printf၊ [ ]၊ [[ ]] နှင့် test ၏ return code ကို print ထုတ်ရန် အသုံးပြုသည်။
  • ((..))inarray[((idx))]=val.
  • ဂဏန်းသင်္ချာအခင်းအကျင်းများတွင် ကွင်းနှစ်ထပ်ကို ပေါင်းထည့်ရန် အကြံပြုချက်တစ်ခု ထည့်ထားသည်။
  • စကားရပ်တွင် a[(x+1)]=val.

source: opennet.ru

မှတ်ချက် Add