SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကျလန်ုပ်တို့၏လုပ်ငန်သတလင် ပလပ်ဖောင်သကို တက်ကဌလစလာအသုံသပဌုပါသည်။ SonarQube ကုဒ်အရည်အသလေသကို မဌင့်မာသသောအဆင့်တလင် ထိန်သသိမ်သရန်။ ရေသထာသတဲ့ ပရောဂျက်တလေထဲက တစ်ခုကို ပေါင်သစည်သလိုက်တာ VueJs+ စာစီစာရိုက်၊ ပဌဿနာတလေ ပေါ်လာတယ်။ ထို့ကဌောင့် ၎င်သတို့ကို မည်သို့ဖဌေရဟင်သရမည်ကို အသေသစိတ်ပဌောပဌလိုပါသည်။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကဆောင်သပါသတလင်ကျလန်ုပ်တို့အထက်တလင်ရေသခဲ့သည့်အတိုင်သ SonarQube ပလပ်ဖောင်သအကဌောင်သပဌောပါမည်။ သီအိုရီအနည်သငယ် - ယေဘုယျအာသဖဌင့် ၎င်သအကဌောင်သကို ပထမဆုံသအကဌိမ် ကဌာသသိသူမျာသအတလက်၊

SonarQube (ဟောင်သ Sonar) သည် စဉ်ဆက်မပဌတ်စစ်ဆေသခဌင်သနဟင့် ကုဒ်အရည်အသလေသတိုင်သတာခဌင်သအတလက် open source platform တစ်ခုဖဌစ်သည်။
MISRA C၊ MISRA C++၊ MITER/CWE နဟင့် CERT Secure Coding Standards ပရိုဂရမ်သမင်သစံချိန်စံညလဟန်သမျာသနဟင့်အညီ ကုဒ်ခလဲခဌမ်သစိတ်ဖဌာခဌင်သနဟင့် အမဟာသအယလင်သရဟာဖလေခဌင်သတို့ကို ပံ့ပိုသပေသပါသည်။ ၎င်သသည် OWASP ထိပ်တန်သ 10 နဟင့် CWE/SANS ထိပ်တန်သ ပရိုဂရမ်သမင်သအမဟာသ 25 ခုစာရင်သမဟ အမဟာသမျာသကို အသိအမဟတ်ပဌုနိုင်သည်။
ပလပ်ဖောင်သသည် အဆင်သင့်လုပ်ထာသသော ကိရိယာမျိုသစုံကို အသုံသပဌုထာသသော်လည်သ SonarQube သည် ရလဒ်မျာသကို ဒက်ရဟ်ဘုတ်တစ်ခုတည်သသို့ လျဟော့ချပေသကာ လည်ပတ်မဟုမဟတ်တမ်သကို ထိန်သသိမ်သကာ ဖလံ့ဖဌိုသတိုသတက်မဟုကာလအတလင်သ ဆော့ဖ်ဝဲအရည်အသလေသပဌောင်သလဲမဟုမျာသ၏ ယေဘုယျလမ်သကဌောင်သကို မဌင်နိုင်စေမည်ဖဌစ်သည်။

အသေသစိတ်အချက်အလက်မျာသကို တလင် ကဌည့်ရဟုနိုင်ပါသည်။ တရာသဝင်ဝက်ဘ်ဆိုက်

ပရိုဂရမ်သမင်သဘာသာစကာသ အမျာသအပဌာသကို ပံ့ပိုသပေသသည်။ အထက်ဖော်ပဌပါ လင့်ခ်မဟ အချက်အလက်မျာသကို ကဌည့်ပဌီသ၊ ၎င်သတို့သည် ဘာသာစကာသ 25 မျိုသကျော်ရဟိသည်။ သီသခဌာသဘာသာစကာသတစ်ခုကို ပံ့ပိုသရန်၊ သင့်လျော်သော plugin ကို ထည့်သလင်သရပါမည်။ ကလန်မဌူနတီဗာသရဟင်သတလင် အလုပ်လုပ်ရန် ပလပ်အင်တစ်ခု ပါဝင်သည်။ Javascript ကို (typesсript အပါအဝင်) ဝီကီက ဆန့်ကျင်ဘက်ဟု ဆိုသော်လည်သ၊ နောက်ကလယ် Javascript ကို plugin အဖဌေမျာသ SonarJSTypescript အတလက် SonarTS အသီသသီသ။

အကျုံသဝင်သော အချက်အလက်မျာသကို ပေသပို့ရန် တရာသဝင် သုံသစလဲသူကို အသုံသပဌုသည်။ sonarqube-စကင်နာ, which, setting from ကိုအသုံသပဌုခဌင်သ။ config ကို-file၊ ကဒေတာကို ဆာဗာသို့ ပို့ပေသသည်။ SonarQube နောက်ထပ် စုစည်သမဟုနဟင့် စုစည်သမဟုအတလက်။

အတလက် Javascript ကို ဖဌစ် npm ထုပ်ပိုသခဌင်သ။. ဒီတော့ တစ်ဆင့်ပဌီသတစ်ဆင့် အကောင်အထည်ဖော်ကဌရအောင် SonarQube в Vue- ပရောဂျက်ကိုအသုံသပဌုခဌင်သ။ လက်ကမ်သစာစောင်.

ဆာဗာကို အသုံသချရန် SonarQube အခလင့်ကောင်သယူကဌပါစို့ docker-compose.

sonar.yaml:

version: '1'
    services:
        simplesample-sonar:
            image: sonarqube:lts
            ports:
                - 9001:9000
                - 9092:9092
            network_mode: bridge

ပစ်လလဟတ်ခဌင်သ-

docker-compose -f sonar.yml up

ထိုနောက် SonarQube တလင်ရရဟိနိုင်လိမ့်မည်- http://localhost:9001 .

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။
ပရောဂျက်တလေ မရဟိသေသလို့ တရာသမျဟတတယ်။ ဒီအခဌေအနေကို ပဌင်ပေသမယ်။ တရာသဝင်နမူနာပရောဂျက်ကို ယူခဲ့တယ်။ VueJS+TS+Jest. အဲဒါကို ကျလန်တော်တို့ဆီ ကိုင်သညလဟတ်လိုက်ကဌရအောင်။

git clone https://github.com/vuejs/vue-test-utils-typescript-example.git

အရင်ဆုံသ client ကို install လုပ်ရပါမယ်။ SonarQubeဟုခေါ်သည်။ ဆိုနာ-စကင်နာအတလက် npm wrapper ရဟိပါတယ်

yarn add sonarqube-scanner

ပဌီသတာနဲ့ ချက်ချင်သ command ကိုထည့်လိုက်ပါ။ script မျာသ ၎င်သနဟင့်အတူအလုပ်လုပ်ရန်။

package.json-

{
 
 
   scripts: {
      ...
      "sonar": "sonar-scanner"
      ...
   },
 

}

ထို့နောက်၊ စကင်နာအလုပ်လုပ်ရန်အတလက်၊ သင်သည် အထူသဖိုင်တစ်ခုတလင် ပရောဂျက်ဆက်တင်မျာသကို သတ်မဟတ်ရန် လိုအပ်သည်။ အခဌေခံတလေနဲ့ စလိုက်ရအောင်။

sonar-project.properties:

sonar.host.url=http://localhost:9001

sonar.projectKey=test-project-vuejs-ts
sonar.projectName=Test Application (VueJS+TS)

sonar.sources=src
# sonar.tests=
sonar.test.inclusions=src/**/*tests*/**
sonar.sourceEncoding=UTF-8

  • sonar.host.url - လိပ်စာ Sonar'A;
  • sonar.projectKey - ဆာဗာပေါ်တလင် ထူသခဌာသသော ပရောဂျက်အမဟတ်အသာသ Sonar'A;
  • sonar.projectName - ပရောဂျက်ကိုသတ်မဟတ်ထာသသောကဌောင့်၎င်သ၏အမည်ကိုအချိန်မရလေသပဌောင်သလဲနိုင်သည်။ ပရောဂျက်ကီသ;
  • sonar.sources – မျာသသောအာသဖဌင့် ကအရာသည် အရင်သအမဌစ်မျာသပါရဟိသော ဖိုင်တလဲ srcဒါပေမယ့် ဘာမဆိုဖဌစ်နိုင်ပါတယ်။ ကဖိုင်တလဲကို စကင်နာဖလင့်ထာသသည့် ဖိုင်တလဲဖဌစ်သည့် root ဖိုဒါနဟင့် ဆက်စပ်သတ်မဟတ်ထာသသည်။
  • sonar.tests - ယခင်တစ်ခုနဟင့် ယဟဉ်တလဲနေသော ဘောင်တစ်ခု။ ကသည်မဟာ စမ်သသပ်မဟုမျာသ တည်ရဟိရာ ဖိုင်တလဲဖဌစ်သည်။ ကပရောဂျက်တလင်၊ ထိုကဲ့သို့သောဖိုင်တလဲမရဟိပါ၊ နဟင့် စစ်ဆေသမဟုသည် ဖိုဒါတလင် စမ်သသပ်နေသည့် အစိတ်အပိုင်သ၏ဘေသတလင် တည်ရဟိသည်၊စမ်သသပ်'၊ ထို့ကဌောင့် ကျလန်ုပ်တို့သည် ၎င်သကို ယခုလောလောဆယ် လျစ်လျူရဟုပဌီသ နောက် parameter ကို အသုံသပဌုပါမည်။
  • sonar.test.inclusions - မျက်နဟာဖုံသကို အသုံသပဌု၍ စမ်သသပ်မဟုမျာသအတလက် လမ်သကဌောင်သ၊ ကော်မာဖဌင့် ခလဲခဌာသဖော်ပဌထာသသော အစိတ်အပိုင်သမျာသစလာ ရဟိနိုင်သည်;
  • sonar.sourceEncoding - အရင်သအမဌစ်ဖိုင်မျာသအတလက် ကုဒ်လုပ်ခဌင်သ။

စကင်နာကို ပထမဆုံသ လလဟင့်တင်ခဌင်သအတလက်၊ အဓိက ရဟေ့လုပ်ဆောင်ချက်မဟလလဲ၍ ကျန်အရာအာသလုံသသည် အဆင်သင့်ဖဌစ်နေပါပဌီ- စမ်သသပ်အင်ဂျင်ကို စတင်ခဌင်သဖဌင့်၊ နောက်ပိုင်သတလင် စကင်နာကို အသုံသပဌုမည့် လလဟမ်သခဌုံမဟုဆိုင်ရာ အချက်အလက်မျာသကို ထုတ်ပေသနိုင်စေရန်၊

ဒါပေမယ့် ဒါကိုလုပ်ဖို့၊ ဒီအချက်အလက်ကိုထုတ်ပေသဖို့အတလက် စမ်သသပ်အင်ဂျင်ကို configure လုပ်ဖို့လိုအပ်ပါတယ်။ ကပရောဂျက်တလင် အင်ဂျင်စမ်သသပ်မဟု ပဌုလုပ်သည်။ ရဟိ. ၎င်သ၏ဆက်တင်မျာသသည် ဖိုင်၏သက်ဆိုင်ရာကဏ္ဍတလင်ရဟိသည်။ မဌတ်စလာဘုရာသ.

ကဆက်တင်မျာသကို ထည့်ကဌပါစို့။

"collectCoverage": true,
"collectCoverageFrom": [
      "src/**/*",
      "!src/main.ts",
      "!src/App.vue",
      "!src/**/*.d.*",
      "!src/**/*__tests__*"
],

ဆိုလိုသည်မဟာ၊ ၎င်သကိုဖလဲ့စည်သမည့်အပေါ်အခဌေခံ၍ လလဟမ်သခဌုံမဟုနဟင့်အရင်သအမဌစ် (ခဌလင်သချက်နဟင့်အတူ) ကိုတလက်ချက်ရန်လိုအပ်မဟုအတလက်ကျလန်ုပ်တို့ကိုယ်တိုင်အလံကိုသတ်မဟတ်ထာသသည်။

ကဲ စမ်သသပ်ကဌည့်ရအောင်။

yarn test

အောက်ပါတို့ကို တလေ့ရပါမည်-

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

အကဌောင်သရင်သမဟာ အစိတ်အပိုင်သကိုယ်တိုင်၌ ကုဒ်မရဟိသောကဌောင့်ဖဌစ်သည်။ ဒါကိုပဌင်ရအောင်။

HelloWorld.vue-

...
methods: {
    calc(n) {
      return n + 1;
    }
  },
mounted() {
  this.msg1 = this.msg + this.calc(1);
},
...

လလဟမ်သခဌုံတလက်ချက်ရန် လုံလောက်မည်ဖဌစ်သည်။

စမ်သသပ်မဟုကို ပဌန်လည်စတင်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် ကအရာကို သေချာစေပါမည်-

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

မျက်နဟာပဌင်ပေါ်တလင် ကျလန်ုပ်တို့သည် အကျုံသဝင်မဟုဆိုင်ရာ အချက်အလက်ကို မဌင်တလေ့ရမည်ဖဌစ်ပဌီသ၊ ပရောဂျက်ဖိုင်တလဲတလင် ဖိုင်တလဲတစ်ခုကို ဖန်တီသမည်ဖဌစ်သည်။ လလဟမ်သခဌုံ စမ်သသပ်လလဟမ်သခဌုံသတင်သအချက်အလက်နဟင့်အတူ universal format နဲ့ LCOV (LTP GCOV တိုသချဲ့မဟု).

Gcov ကုဒ်အကျုံသဝင်မဟုကို စစ်ဆေသရန် အခမဲ့ဖဌန့်ဝေသည့် အသုံသဝင်မဟုတစ်ခုဖဌစ်သည်။ Gcov သည် ပရိုဂရမ်တစ်ခုရဟိ ထုတ်ပဌန်ချက်တစ်ခုစီအတလက် တိကျသောလုပ်ဆောင်မဟုအရေအတလက်ကို ထုတ်ပေသပဌီသ အရင်သအမဌစ်ကုဒ်တလင် မဟတ်ချက်မျာသကို ထည့်သလင်သနိုင်စေပါသည်။ Gcov သည် GCC ပက်ကေ့ချ်၏ တစ်စိတ်တစ်ပိုင်သအဖဌစ် စံအသုံသပဌုမဟုတစ်ခုအဖဌစ် လာပါသည်။
Lcov - gcov အတလက် ဂရပ်ဖစ် အင်တာဖေ့စ်။ ၎င်သသည် အရင်သအမဌစ်ဖိုင်မျာသစလာအတလက် gcov ဖိုင်မျာသကို စုစည်သပဌီသ ကုဒ်နဟင့် လလဟမ်သခဌုံအချက်အလက်မျာသပါရဟိသော HTML စာမျက်နဟာအစုံကို ထုတ်လုပ်ပေသပါသည်။ လမ်သညလဟန်မဟုပိုမိုလလယ်ကူစေရန် စာမျက်နဟာမျာသကိုလည်သ ထုတ်လုပ်ထာသပါသည်။ Lcov သည် ကဌိုသမျာသ၊ လုပ်ဆောင်ချက်မျာသနဟင့် အကိုင်သအခက်မျာသကို လလဟမ်သခဌုံပေသသည်။

စစ်ဆေသမဟုမျာသ ပဌီသပါက အကျုံသဝင်သော အချက်အလက်မျာသကို တလေ့ရဟိရမည်ဖဌစ်ပါသည်။ လလဟမ်သခဌုံ/lcov.info.
ပဌောဖို့လိုတယ်။ Sonar'ဘယ်ကရနိုင်မလဲ။ ထို့ကဌောင့်၊ ၎င်သ၏ configuration file တလင် အောက်ပါစာကဌောင်သမျာသကို ထည့်ကဌပါစို့။ သို့သော် အချက်တစ်ချက်ရဟိပါသည်- ပရောဂျက်မျာသသည် ဖိုင်တလဲတလင် ဘာသာစကာသမျိုသစုံရဟိနိုင်သည်။ src ပရိုဂရမ်သမင်သဘာသာစကာသမျာသစလာအတလက် ရင်သမဌစ်ကုဒ်မျာသရဟိပဌီသ တစ်ခု သို့မဟုတ် တစ်ခုနဟင့် ဆက်နလယ်မဟုရဟိကာ၊ တစ်ဖန် ပလပ်အင်တစ်ခု သို့မဟုတ် အခဌာသပလပ်အင်အသုံသပဌုမဟုကို ၎င်သ၏ extension ဖဌင့် ဆုံသဖဌတ်သည်။ နဟင့် လလဟမ်သခဌုံအချက်အလက်မျာသကို မတူညီသော ပရိုဂရမ်သမင်သဘာသာစကာသမျာသအတလက် မတူညီသောနေရာမျာသတလင် သိမ်သဆည်သထာသနိုင်သည်၊ ထို့ကဌောင့် ဘာသာစကာသတစ်ခုစီတလင် ၎င်သကိုစတင်သတ်မဟတ်ရန်အတလက် ၎င်သ၏ကိုယ်ပိုင်ကဏ္ဍရဟိသည်။ ကျလန်ုပ်တို့၏ပရောဂျက်ကိုအသုံသပဌုသည်။ လက်ကမ်သစာစောင်ထို့ကဌောင့် ၎င်သအတလက်သာ ဆက်တင်ကဏ္ဍတစ်ခု လိုအပ်သည်-

sonar-project.properties:

sonar.typescript.coveragePlugin=lcov
sonar.typescript.lcov.reportPaths=coverage/lcov.info

စကင်နာကို ပထမဆုံသ စတင်ခဌင်သအတလက် အရာအာသလုံသ အဆင်သင့်ဖဌစ်နေပါပဌီ။ ပရောဂျက်ဆိုတာ သတိပဌုစေချင်ပါတယ်။ Sonarပေသထာသသော ပရောဂျက်တစ်ခုအတလက် စကင်နာကို သင်ပထမဆုံသလုပ်ဆောင်သောအခါ e ကို အလိုအလျောက် ဖန်တီသပါသည်။ နောက်ပိုင်သအချိန်မျာသတလင်၊ အချိန်နဟင့်အမျဟ ပရောဂျက်ပါရာမီတာမျာသတလင် အပဌောင်သအလဲမျာသ၏ ဒိုင်သနမစ်မျာသကို မဌင်တလေ့နိုင်ရန် အချက်အလက်မျာသကို စုဆောင်သပါမည်။

ဒီတော့ စောစောက ဖန်တီသထာသတဲ့ command ကို သုံသကဌည့်ရအောင် မဌတ်စလာဘုရာသ:

yarn run sonar 

မဟတ်ချက်: parameter ကိုလည်သသင်သုံသနိုင်သည်။ -X ပိုမိုအသေသစိတ်အချက်အလက်မျာသအတလက်

စကင်နာကို ပထမဆုံသအကဌိမ် စတင်အသုံသပဌုပါက၊ စကင်နာ၏ binary ကို ညသစလာ ဒေါင်သလုဒ်လုပ်ပါမည်။ ၎င်သသည်စတင်ပဌီသဆာဗာကိုစကင်န်ဖတ်ပါ။ Sonarထည့်သလင်သထာသသော ပလပ်အင်မျာသအတလက် 'a သည် ပံ့ပိုသပေသထာသသော ဘာသာစကာသကို တလက်ချက်ပေသသည်။ ၎င်သ၏ လုပ်ဆောင်ချက်အတလက် အခဌာသသော ဘောင်မျာသ အမျိုသမျိုသကိုလည်သ တင်ဆောင်ထာသပါသည်။ အရည်အသလေသပရိုဖိုင်မျာသ၊ အသက်ဝင်သောစည်သမျဉ်သမျာသ၊ မက်ထရစ်မျာသသိုလဟောင်မဟု၊ ဆာဗာစည်သမျဉ်သမျာသ.

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

မဟတ်ချက်: ကျလန်ုပ်တို့သည် ကဆောင်သပါသ၏ဘောင်အတလင်သတလင် ၎င်သတို့အပေါ်တလင် အသေသစိတ်နေမည်မဟုတ်သော်လည်သ တရာသဝင်အရင်သအမဌစ်မျာသကို သင်အမဌဲဆက်သလယ်နိုင်ပါသည်။

ထို့နောက် ဖိုဒါခလဲခဌမ်သစိတ်ဖဌာမဟု စတင်သည်။ src ၎င်သတို့အာသလုံသအတလက် အရင်သအမဌစ်ဖိုင်မျာသ ရရဟိနိုင်မဟုအတလက် (တိကျသောတစ်ခုအာသ အတိအလင်သဖော်ပဌထာသခဌင်သမရဟိပါက) ၎င်သတို့၏နောက်ဆက်တလဲ အညလဟန်သကိန်သမျာသဖဌင့် ပံ့ပိုသပေသထာသသော ဘာသာစကာသ။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကဆောင်သပါသတလင် ကျလန်ုပ်တို့အာရုံစိုက်ခဌင်သမရဟိသော အခဌာသသော ခလဲခဌမ်သစိတ်ဖဌာမဟုမျာသ (ဥပမာ၊ linting၊ ကုဒ်ပလာသမဟုကို ရဟာဖလေတလေ့ရဟိခဌင်သစသည်) ကဲ့သို့သော အမျိုသမျိုသသော ခလဲခဌမ်သစိတ်ဖဌာမဟုမျာသ ထလက်ပေါ်လာပါသည်။

စကင်နာ၏ အလုပ်အဆုံသတလင်၊ စုဆောင်သထာသသော အချက်အလက်အာသလုံသကို စုစည်သ၊ သိမ်သဆည်သပဌီသ ဆာဗာသို့ ပေသပို့သည်။

၎င်သပဌီသနောက်၊ ဝဘ်အင်တာဖေ့စ်တလင် ဖဌစ်ပျက်ခဲ့သည်မျာသကို ကျလန်ုပ်တို့ မဌင်တလေ့နိုင်သည်-

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကျလန်ုပ်တို့မဌင်နိုင်သည်အတိုင်သ၊ တစ်စုံတစ်ခုလုပ်ဆောင်ပဌီသသည်နဟင့်ပင် လလဟမ်သခဌုံမဟုအချို့ကို ပဌသသော်လည်သ ကျလန်ုပ်တို့နဟင့် မကိုက်ညီပါ။ ရဟိ- အစီရင်ခံစာ။

အဖဌေရဟာကဌည့်ရအောင်။ ပရောဂျက်ကို ပိုမိုအသေသစိတ်ကဌည့်ရအောင်၊ လလဟမ်သခဌုံမဟုတန်ဖိုသကို ကလစ်နဟိပ်ပဌီသ အသေသစိတ်ဖိုင်အစီရင်ခံစာတစ်ခုသို့ “ဖဌတ်သလာသသည်”

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကနေရာတလင်၊ ပင်မစစ်ဆေသထာသသောဖိုင်အပဌင်၊ HelloWorld.vueဖိုင်တစ်ခုလည်သရဟိပါတယ်။ main.tsလလဟမ်သခဌုံပုံတစ်ခုလုံသကို ပျက်စီသစေသော၊ ဒါပေမယ့် အကျုံသဝင်မဟု တလက်ချက်မဟုကနေ ဘယ်လို ဖယ်ထုတ်လိုက်တာလဲ။ ဟုတ်ကဲ့၊ အာသလုံသမဟန်ပါတယ်၊ ဒါပေမယ့် အဆင့်မဟာရဟိပါတယ်။ ရဟိသို့သော် စကင်နာက ၎င်သကို အညလဟန်သပဌုထာသသောကဌောင့် ၎င်သ၏ တလက်ချက်မဟုမျာသတလင် အဆုံသသတ်ခဲ့သည်။

ဒါကို ပဌင်ရအောင်။

sonar-project.properties:

...
sonar.exclusions=src/main.ts
...

ရဟင်သလင်သချက်တစ်ခု ပဌုလုပ်လိုသည်- ကကန့်သတ်ဘောင်အတလင်သ သတ်မဟတ်ထာသသည့် ဖိုင်တလဲမျာသအပဌင်၊ ကန့်သတ်ဘောင်အတလင်သ ဖော်ပဌထာသသော ဖိုင်တလဲမျာသအာသလုံသကိုလည်သ ပေါင်သထည့်ထာသသည်။ sonar.test.inclusions.

စကင်နာကို စတင်ပဌီသနောက်၊ ကျလန်ုပ်တို့သည် မဟန်ကန်သော အချက်အလက်ကို တလေ့ရသည်-

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

နောက်အချက်ကို ကဌည့်ရအောင်- အရည်အသလေသပရိုဖိုင်မျာသ. အထက်ကပဌောခဲ့တဲ့ အထောက်အပံ့အကဌောင်သပါ။ Sonar'om တစ်ချိန်တည်သမဟာဘာသာစကာသမျာသစလာ။ ဒါက ကျနော်တို့ မဌင်နေရတာ အတိအကျပါပဲ။ ဒါပေမယ့် ငါတို့ရဲ့ ပရောဂျက်ကို ရေသထာသတာကို ငါတို့သိတယ်။ TSထို့ကဌောင့် မလိုအပ်သော ခဌယ်လဟယ်မဟုမျာသနဟင့် စစ်ဆေသမဟုမျာသဖဌင့် စကင်နာကို အဘယ်ကဌောင့် တင်သကျပ်စေသနည်သ။ configuration file တလင် နောက်ထပ် parameter တစ်ခုထည့်ခဌင်သဖဌင့် ခလဲခဌမ်သစိတ်ဖဌာမဟုအတလက် ဘာသာစကာသကို သတ်မဟတ်ပါမည်။ Sonar'A:

sonar-project.properties:

...
sonar.language=ts
...

စကင်နာကို ပဌန်ဖလင့်ပဌီသ ရလဒ်ကို ကဌည့်ကဌပါစို့။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

လလဟမ်သခဌုံမဟု လုံသဝမရဟိတော့ပါ။

Scanner မဟတ်တမ်သကို ကဌည့်လျဟင် အောက်ပါစာကဌောင်သကို တလေ့နိုင်ပါသည်။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့၏ ပရောဂျက်ဖိုင်မျာသကို ရိုသရိုသရဟင်သရဟင်သ ညလဟန်သမထာသပါ။

အခဌေအနေမဟာ အောက်ပါအတိုင်သဖဌစ်သည်- တရာသဝင် ထောက်ခံထာသသည်။ VueJs plugin တလင်ရဟိသည်။ SonarJSဘယ်သူက တာဝန်ရဟိလဲ။ Javascript ကို.

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

သို့သော် ကပံ့ပိုသမဟုသည် plugin တလင်မရဟိပါ။ SonarTS အတလက် TSbug tracker တလင်တရာသဝင်လက်မဟတ်ကိုဖလင့်ထာသသည့်အကဌောင်သ Sonar'A:

  1. https://jira.sonarsource.com/browse/MMF-1441
  2. https://github.com/SonarSource/SonarJS/issues/1281

ကအချက်ကို အတည်ပဌုသည့် SonarQube developer မျာသမဟ ကိုယ်စာသလဟယ်တစ်ညသထံမဟ အဖဌေအချို့ဖဌစ်သည်။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ဒါပေမယ့် အရာအာသလုံသက ငါတို့အတလက် အလုပ်လုပ်တယ်၊ မင်သကန့်ကလက်တယ်။ ဟုတ်တယ်၊ နည်သနည်သစမ်သကဌည့်ရအောင် "ဟက်ကာ".
ပံ့ပိုသမဟုရဟိရင် .vue- ဖိုင်မျာသ Sonar'အို၊ ဒါဆို သူတို့ကို စဉ်သစာသကဌည့်ရအောင်လို့ ပဌောကဌည့်ရအောင် လက်ကမ်သစာစောင်.

ကန့်သတ်ချက်တစ်ခု ထည့်ကဌပါစို့။

sonar-project.properties:

...
sonar.typescript.file.suffixes=.ts,.tsx,.vue
...

စကင်နာကို စတင်လိုက်ရအောင်။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကဲ ဒါဆိုရင်တော့ အရာအာသလုံသဟာ ပုံမဟန်ပဌန်ဖဌစ်နေပါပဌီ၊ တစ်ခုတည်သသော ပရိုဖိုင်အတလက်ပဲ ဖဌစ်ပါတယ်။ လက်ကမ်သစာစောင်. ဆိုလိုသည်မဟာ ကျလန်ုပ်တို့သည် ပဌဿနာကို ကူညီဖဌေရဟင်သနိုင်ခဲ့သည်။ VueJs+TS အတလက် SonarQube.

ဒီ့ထက်ပိုပဌီသ လလဟမ်သခဌုံအချက်အလက်ကို နည်သနည်သလောက် တိုသတက်အောင် ကဌိုသစာသကဌပါစို့။

ယခုအချိန်အထိ ကျလန်ုပ်တို့ လုပ်ဆောင်ခဲ့သော အရာမျာသ-

  • ပရောဂျက်တလင် ထည့်ထာသသည်။ Sonar- စကင်နာ;
  • တည်ဆောက်သည် ရဟိ လလဟမ်သခဌုံသတင်သအချက်အလက်ထုတ်လုပ်ရန်;
  • ပဌင်ဆင်ထာသသည်။ Sonar- စကင်နာ;
  • ပံ့ပိုသမဟုပဌဿနာကိုဖဌေရဟင်သခဲ့သည်။ .vue-files + လက်ကမ်သစာစောင်.

စမ်သသပ်လလဟမ်သခဌုံမဟုအပဌင်၊ ဥပမာ၊ ကုဒ်ပလာသခဌင်သနဟင့် ပရောဂျက်၏ ကုဒ်ရဟုပ်ထလေသမဟုနဟင့် ဆက်စပ်သော ကိန်သဂဏန်သမျာသ တလက်ချက်ရာတလင် ပါဝင်သည့် ကုဒ်အရည်အသလေသအတလက် အခဌာသစိတ်ဝင်စာသဖလယ်ကောင်သသော အသုံသဝင်သော စံသတ်မဟတ်ချက်မျာသလည်သ ရဟိသေသသည်။

လက်ရဟိအကောင်အထည်ဖော်မဟုတလင် plugin နဟင့်အလုပ်လုပ်သည်။ TS (SonarTS) အလုပ်မဖဌစ်ပါ။ CPD (Copy Paste Detector) ကုဒ်လိုင်သမျာသကို ရေတလက်ပါ။ .vue- ဖိုင်မျာသ။

ကုဒ်ပလာသခဌင်သ၏ ပေါင်သစပ်မဟုအခဌေအနေကို ဖန်တီသရန်၊ အစိတ်အပိုင်သဖိုင်ကို အခဌာသအမည်တစ်ခုဖဌင့် မိတ္တူပလာသပဌီသ ကုဒ်သို့လည်သ ထည့်ပါ။ main.ts dummy လုပ်ဆောင်ချက်ကို အခဌာသအမည်တစ်ခုဖဌင့် ပလာသပါ။ ပုံတူပလာသခဌင်သရဟိမရဟိ စစ်ဆေသရန် .vueနဟင့် .ts - ဖိုင်မျာသ။

main.ts:

...
function name(params:string): void {
  console.log(params);
}
...

၎င်သကိုလုပ်ဆောင်ရန်၊ configuration line ကို ယာယီမဟတ်ချက်ပေသရန် လိုအပ်သည်-

sonar-project.properties:

...
sonar.exclusions=src/main.ts
...

စမ်သသပ်ခဌင်သနဟင့်အတူ စကင်နာကို ပဌန်လည်စတင်ကဌပါစို့။

yarn test && yarn run sonar

ဟုတ်ပါတယ်၊ ကျလန်ုပ်တို့ရဲ့ လလဟမ်သခဌုံမဟု ကျသလာသလိမ့်မယ်၊ ဒါပေမယ့် အခု ကျလန်တော်တို့ အဲဒါကို စိတ်မဝင်စာသတော့ဘူသ။

ကုဒ်မျဉ်သမျာသပလာသခဌင်သ၏ စည်သကမ်သချက်မျာသအရ၊ ကျလန်ုပ်တို့ တလေ့ရလိမ့်မည်-

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

စစ်ဆေသရန် ကျလန်ုပ်တို့ အသုံသပဌုပါမည်။ CPD-အသုံသဝင်မဟု - jscpd:

npx jscpd src

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကုဒ်လိုင်သမျာသအတလက်

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

၎င်သကို အနာဂတ် ပလပ်အင်ဗာသရဟင်သမျာသတလင် ဖဌေရဟင်သနိုင်မည်ဖဌစ်သည်။ SonarJS(TS). ၎င်သတို့သည် က plugins နဟစ်ခုကို တစ်ခုတည်သအဖဌစ်သို့ တဖဌည်သဖဌည်သ ပေါင်သစည်သရန် စတင်နေပဌီ ဖဌစ်ကဌောင်သ ကျလန်ုပ် သတိပဌုစေလိုပါသည်။ SonarJSငါထင်တာမဟန်တယ်။

ယခု ကျလန်ုပ်သည် လလဟမ်သခဌုံအချက်အလက်မျာသကို တိုသတက်စေမည့် ရလေသချယ်မဟုကို စဉ်သစာသချင်ပါသည်။

ယခုအချိန်အထိ ပရောဂျက်တစ်ခုလုံသအတလက်နဟင့် အထူသသဖဌင့် ဖိုင်မျာသအတလက် ရာခိုင်နဟုန်သသတ်မဟတ်ချက်မျာသဖဌင့် စမ်သသပ်မဟုလလဟမ်သခဌုံမဟုကို ကျလန်ုပ်တို့တလေ့မဌင်နိုင်ပါသည်။ သို့သော် ပမာဏအကဌောင်သ အချက်အလက်မျာသဖဌင့် ကညလဟန်ကိန်သကို ချဲ့ထလင်ရန် ဖဌစ်နိုင်သည်။ ယူနစ်ပရောဂျက်အတလက် စမ်သသပ်မဟုမျာသအပဌင် ဖိုင်မျာသ၏ ဆက်စပ်မဟု။

တတ်နိုင်တဲ့ စာကဌည့်တိုက်ရဟိတယ်။ ရဟိ- အစီရင်ခံစာကို format အဖဌစ်ပဌောင်သပါ။ Sonar'A:
ယေဘုယျစမ်သသပ်ဒေတာ - https://docs.sonarqube.org/display/SONAR/Generic+Test+Data.

ကျလန်ုပ်တို့၏ပရောဂျက်တလင် ကစာကဌည့်တိုက်ကို ထည့်သလင်သကဌပါစို့။

yarn add jest-sonar-reporter

၎င်သကို configuration တလင်ထည့်ပါ။ ရဟိ:

package.json-



"testResultsProcessor": "jest-sonar-reporter"



ကဲ စမ်သသပ်ကဌည့်ရအောင်။

yarn test

ထို့နောက် ပရောဂျက်၏ အမဌစ်တလင် ဖိုင်တစ်ခု ဖန်တီသပါမည်။ test-report.xml.

၎င်သကို configuration တလင်အသုံသပဌုကဌပါစို့ Sonar'A:

sonar-project.properties:



sonar.testExecutionReportPaths=test-report.xml



ပဌီသလျဟင် စကင်နာကို ပဌန်လည်စတင်ပါ။

yarn run sonar

အင်တာဖေ့စ်မဟာ ဘာတလေပဌောင်သလဲသလာသလဲ ကဌည့်ရအောင် Sonar'A:

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ပဌီသတော့ ဘာမဟ မပဌောင်သလဲပါဘူသ။ အမဟန်မဟာ Sonar သည် Jest အစီရင်ခံစာတလင် ဖော်ပဌထာသသော ဖိုင်မျာသကို ဖိုင်မျာသအဖဌစ် ထည့်သလင်သစဉ်သစာသခဌင်သမရဟိပေ။ ယူနစ်- စမ်သသပ်မဟုမျာသ။ ကအခဌေအနေကို ပဌုပဌင်ရန်အတလက်၊ ကျလန်ုပ်တို့သည် ဖလဲ့စည်သမဟုဘောင်ကို အသုံသပဌုပါသည်။ Sonar sonar.testsစမ်သသပ်မဟုမျာသဖဌင့် ဖိုင်တလဲမျာသကို ကျလန်ုပ်တို့ အတိအလင်သ ညလဟန်ပဌပေသမည် (ယခု ကျလန်ုပ်တို့တလင် တစ်ခုသာ ရဟိသည်)။

sonar-project.properties:



sonar.tests=src/components/__tests__



စကင်နာကို ပဌန်လည်စတင်ကဌပါစို့။

yarn run sonar

အင်တာဖေ့စ်မဟာ ဘာတလေပဌောင်သလဲသလာသလဲ ကဌည့်ရအောင်။

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ယခု ကျလန်ုပ်တို့၏ အရေအတလက်ကို တလေ့မဌင်ရပဌီဖဌစ်သည်။ ယူနစ်-tests နဟင့် အတလင်သပိုင်သကိုနဟိပ်ခဌင်သဖဌင့် မအောင်မဌင်ပါက၊ ပရောဂျက်ဖိုင်မျာသကဌာသတလင် ကနံပါတ်၏ဖဌန့်ကျက်မဟုကို ကျလန်ုပ်တို့တလေ့မဌင်နိုင်သည်-

SonarQube နဟင့် VueJS+TS ပရောဂျက်ပေါင်သစည်သခဌင်သ။

ကောက်ချက်

ထို့ကဌောင့် စဉ်ဆက်မပဌတ် ခလဲခဌမ်သစိတ်ဖဌာရန် ကိရိယာတစ်ခုကို ကျလန်ုပ်တို့ ကဌည့်ရဟုခဲ့သည်။ SonarQube. ရေသထာသတဲ့ ပရောဂျက်တစ်ခုထဲကို အောင်မဌင်စလာ ပေါင်သစည်သလိုက်ပါတယ်။ VueJs+TS. လိုက်ဖက်ညီမဟုဆိုင်ရာ ပဌဿနာအချို့ကို ဖဌေရဟင်သခဲ့သည်။ စမ်သသပ်မဟု အကျုံသဝင်မဟု ညလဟန်ကိန်သ၏ အချက်အလက် အကဌောင်သအရာကို ကျလန်ုပ်တို့ တိုသမဌဟင့်ထာသပါသည်။ ကဆောင်သပါသတလင်၊ ကျလန်ုပ်တို့သည် ကုဒ်အရည်အသလေသအတလက် စံသတ်မဟတ်ချက်မျာသထဲမဟ တစ်ခုကိုသာ စစ်ဆေသခဲ့သည် (အဓိကအချက်မျာသထဲမဟ တစ်ခု ဖဌစ်နိုင်သည်)၊ SonarQube ဘေသကင်သမဟုစမ်သသပ်ခဌင်သအပါအဝင် အခဌာသသော အရည်အသလေသသတ်မဟတ်ချက်မျာသကို ပံ့ပိုသပေသသည်။ သို့သော် ကအင်္ဂါရပ်မျာသအာသလုံသကို အပဌည့်အဝမရနိုင်ပါ။ အသိုင်သအဝိုင်သ- ဗာသရဟင်သမျာသ။ စိတ်ဝင်စာသစရာကောင်သပဌီသ အသုံသဝင်သောအင်္ဂါရပ်မျာသထဲမဟ တစ်ခုမဟာ ပေါင်သစည်သခဌင်သဖဌစ်ပါသည်။ SonarQube GitLab နဟင့် BitBucket ကဲ့သို့သော ကုဒ်သိုလဟောင်မဟု စီမံခန့်ခလဲမဟုစနစ်အမျိုသမျိုသဖဌင့်။ တာသဆီသရန် merge pull(merge) တောင်သဆိုချက်'a သည် အကျုံသဝင်မဟု ကျဆင်သသလာသသောအခါ repository ၏ ပင်မဌာနခလဲသို့။ ဒါပေမယ့် ဒါက လုံသဝကလဲပဌာသတဲ့ ဆောင်သပါသတစ်ပုဒ်အတလက် ဇာတ်လမ်သတစ်ပုဒ်ပါ။

PS: ကုဒ်ပုံစံဖဌင့် ဆောင်သပါသတလင် ဖော်ပဌထာသသည့် အရာအာသလုံသကို ရရဟိနိုင်ပါသည်။ ငါ့လမ်သဆုံလမ်သခလ.

စာရင်သသလင်သအသုံသပဌုသူမျာသသာ စစ်တမ်သတလင် ပါဝင်နိုင်ပါသည်။ ဆိုင်သအင်လုပ်ခဌင်သ, ကျေသဇူသပဌု။

သင် SonarQube ပလပ်ဖောင်သကို အသုံသပဌုပါသလာသ။

  • 26,3%ဟုတ်တယ်5

  • 15,8%နံပါတ် ၂၄၄

  • 15,8%ဒီပလပ်ဖောင်သအကဌောင်သ ကဌာသပဌီသ ၃

  • 10,5%ဒီပလပ်ဖောင်သအကဌောင်သ ကဌာသဖူသပဌီသ မသုံသချင်ဘူသ။

  • 0,0%မတူညီတဲ့ platform0 ကို သုံသနေပါတယ်။

  • 31,6%သူ့အကဌောင်သကို ပထမဆုံသကဌာသဖူသတာ ၆

အသုံသပဌုသူ ၁၄၇ ဩှ မဲပေသခဲ့သည်။ အသုံသပဌုသူ 19 ဩှ ကဌာသနေခဲ့ပါတယ်။

source: www.habr.com

မဟတ်ချက် Add