Ενσωμάτωση έργου VueJS+TS με το SonarQube

Χρησιμοποιούμε ενεργά την πλατφόρμα στη δουλειά μας soundQube για τη διατήρηση της ποιότητας του κώδικα σε υψηλό επίπεδο. Κατά την ενσωμάτωση ενός από τα έργα που είναι γραμμένα στο VueJs+Typescript, προέκυψαν προβλήματα. Ως εκ τούτου, θα ήθελα να σας πω πιο αναλυτικά πώς καταφέραμε να τα λύσουμε.

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Σε αυτό το άρθρο θα μιλήσουμε, όπως έγραψα παραπάνω, για την πλατφόρμα SonarQube. Μια μικρή θεωρία - τι είναι γενικά, για όσους την ακούν για πρώτη φορά:

soundQube (πρώην Sonar) είναι μια πλατφόρμα ανοιχτού κώδικα για συνεχή επιθεώρηση και μέτρηση ποιότητας κώδικα.
Υποστηρίζει ανάλυση κώδικα και ανίχνευση σφαλμάτων σύμφωνα με τους κανόνες των προτύπων προγραμματισμού MISRA C, MISRA C++, MITER/CWE και CERT Secure Coding Standards. Μπορεί επίσης να αναγνωρίσει σφάλματα από τις λίστες σφαλμάτων προγραμματισμού Top 10 και CWE/SANS Top 25 του OWASP.
Παρά το γεγονός ότι η πλατφόρμα χρησιμοποιεί διάφορα έτοιμα εργαλεία, το SonarQube μειώνει τα αποτελέσματα σε ένα ενιαίο ταμπλό, διατηρώντας ένα ιστορικό εκτελέσεων και έτσι σας επιτρέπει να βλέπετε τη γενική τάση των αλλαγών στην ποιότητα του λογισμικού κατά την ανάπτυξη.

Περισσότερες λεπτομέρειες μπορείτε να βρείτε στο επίσημη ιστοσελίδα

Υποστηρίζεται ένας μεγάλος αριθμός γλωσσών προγραμματισμού. Κρίνοντας από τις πληροφορίες από τον παραπάνω σύνδεσμο, πρόκειται για περισσότερες από 25 γλώσσες. Για να υποστηρίξετε μια συγκεκριμένη γλώσσα, πρέπει να εγκαταστήσετε το κατάλληλο πρόσθετο. Η έκδοση κοινότητας περιλαμβάνει ένα πρόσθετο για εργασία Javascript (συμπεριλαμβανομένου του typeсript), αν και το wiki λέει το αντίθετο. Πίσω Javascript απαντήσεις plugin SonarJS, για Typescript SonarTS αντιστοίχως.

Ο επίσημος πελάτης χρησιμοποιείται για την αποστολή πληροφοριών κάλυψης sonarqube-scanner, το οποίο, χρησιμοποιώντας τις ρυθμίσεις από config-file, στέλνει αυτά τα δεδομένα στον διακομιστή soundQube για περαιτέρω ενοποίηση και συγκέντρωση.

Για Javascript υπάρχει npm περιτύλιγμα. Λοιπόν, ας ξεκινήσουμε την εφαρμογή βήμα προς βήμα soundQube в Προβολή- χρήση έργου Typescript.

Για να αναπτύξετε έναν διακομιστή soundQube ας εκμεταλλευτούμε docker-compose.

βυθόμετρο.yaml:

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

Εκκίνηση:

docker-compose -f sonar.yml up

Έπειτα soundQube θα είναι διαθέσιμο στη διεύθυνση: http://localhost:9001 .

Ενσωμάτωση έργου VueJS+TS με το SonarQube
Δεν υπάρχουν ακόμη έργα σε αυτό και αυτό είναι δίκαιο. Θα διορθώσουμε αυτή την κατάσταση. Πήρα το επίσημο παράδειγμα έργου VueJS+TS+Jest. Ας το λυγίσουμε προς τον εαυτό μας:

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

Πρώτα πρέπει να εγκαταστήσουμε τον πελάτη soundQube, η οποία ονομάζεται σόναρ-σαρωτήςΓια npm υπάρχει ένα περιτύλιγμα:

yarn add sonarqube-scanner

Και αμέσως προσθέστε την εντολή στο Εφαρμογές να δουλέψεις μαζί του.

package.json:

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

Στη συνέχεια, για να λειτουργήσει ο σαρωτής, πρέπει να ορίσετε τις ρυθμίσεις του έργου σε ένα ειδικό αρχείο. Ας ξεκινήσουμε με τα βασικά.

σόναρ-έργο.ιδιοκτησίες:

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'ΕΝΑ;
  • βυθόμετρο.projectKey – μοναδικό αναγνωριστικό έργου στον διακομιστή Sonar'ΕΝΑ;
  • βυθόμετρο.Όνομα έργου – το όνομά του, μπορεί να αλλάξει ανά πάσα στιγμή, αφού το έργο προσδιορίζεται από projectKey;
  • βυθόμετρο.πηγές – φάκελος με πηγές, συνήθως αυτό src, αλλά μπορεί να είναι οτιδήποτε. Αυτός ο φάκελος έχει οριστεί σε σχέση με τον ριζικό φάκελο, ο οποίος είναι ο φάκελος από τον οποίο εκκινείται ο σαρωτής.
  • βυθόμετρο.δοκιμές – μια παράμετρος που πηγαίνει παράλληλα με την προηγούμενη. Αυτός είναι ο φάκελος όπου βρίσκονται τα τεστ. Σε αυτό το έργο, δεν υπάρχει τέτοιος φάκελος και η δοκιμή βρίσκεται δίπλα στο στοιχείο που ελέγχεται στο φάκελο "δοκιμή', οπότε θα το αγνοήσουμε προς το παρόν και θα χρησιμοποιήσουμε την επόμενη παράμετρο.
  • βυθόμετρο.δοκιμή.συμπεριλήψεις – διαδρομή για δοκιμές με χρήση μάσκας, μπορεί να υπάρχουν πολλά στοιχεία που παρατίθενται χωρισμένα με κόμματα.
  • sonar.sourceEncoding – κωδικοποίηση για αρχεία πηγής.

Για την πρώτη εκκίνηση του σαρωτή, όλα είναι έτοιμα, εκτός από την κύρια προηγούμενη ενέργεια: εκκίνηση της ίδιας της μηχανής δοκιμής, ώστε να μπορεί να παράγει πληροφορίες σχετικά με την κάλυψη, την οποία θα χρησιμοποιήσει στη συνέχεια ο σαρωτής.

Αλλά για να το κάνετε αυτό, πρέπει να διαμορφώσετε τη μηχανή δοκιμής για να δημιουργεί αυτές τις πληροφορίες. Σε αυτό το έργο, ο δοκιμαστικός κινητήρας είναι υπάρχει. Και οι ρυθμίσεις του βρίσκονται στην αντίστοιχη ενότητα του αρχείου πακέτο.json.

Ας προσθέσουμε αυτές τις ρυθμίσεις:

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

Δηλαδή, ορίζουμε την ίδια τη σημαία για την ανάγκη υπολογισμού της κάλυψης και την πηγή (μαζί με εξαιρέσεις) βάσει της οποίας θα διαμορφωθεί.

Τώρα ας εκτελέσουμε το τεστ:

yarn test

Θα δούμε τα εξής:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Ο λόγος είναι ότι δεν υπάρχει κώδικας στο ίδιο το στοιχείο. Ας το διορθώσουμε αυτό.

HelloWorld.vue:

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

Αυτό θα είναι αρκετό για τον υπολογισμό της κάλυψης.

Μετά την επανεκκίνηση της δοκιμής, θα βεβαιωθούμε για αυτό:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Στην οθόνη θα πρέπει να δούμε πληροφορίες σχετικά με την κάλυψη και θα δημιουργηθεί ένας φάκελος στο φάκελο του έργου κάλυψη με πληροφορίες κάλυψης δοκιμής σε καθολική μορφή LCOV (επέκταση LTP GCOV).

Gcov είναι ένα δωρεάν διανεμημένο βοηθητικό πρόγραμμα για την εξέταση της κάλυψης κώδικα. Το Gcov δημιουργεί τον ακριβή αριθμό των εκτελέσεων για κάθε πρόταση σε ένα πρόγραμμα και σας επιτρέπει να προσθέσετε σχολιασμούς στον πηγαίο κώδικα. Το Gcov διατίθεται ως τυπικό βοηθητικό πρόγραμμα ως μέρος του πακέτου GCC.
Lcov - γραφική διεπαφή για gcov. Συγκεντρώνει αρχεία gcov για πολλαπλά αρχεία πηγής και παράγει ένα σύνολο σελίδων HTML με πληροφορίες κώδικα και κάλυψης. Οι σελίδες δημιουργούνται επίσης για να διευκολύνουν την πλοήγηση. Το Lcov υποστηρίζει κάλυψη συμβολοσειρών, συναρτήσεων και κλάδων.

Μετά την ολοκλήρωση των δοκιμών, οι πληροφορίες κάλυψης θα βρίσκονται στο coverage/lcov.info.
Πρέπει να πούμε Sonar«Από πού μπορώ να το πάρω; Επομένως, ας προσθέσουμε τις ακόλουθες γραμμές στο αρχείο ρυθμίσεών του. Αλλά υπάρχει ένα σημείο: τα έργα μπορούν να είναι πολύγλωσσα, δηλαδή μέσα στο φάκελο src υπάρχουν πηγαίοι κώδικες για πολλές γλώσσες προγραμματισμού και σχέση με τη μία ή την άλλη, και με τη σειρά της, η χρήση ενός ή άλλου πρόσθετου καθορίζεται από την επέκτασή του. Και οι πληροφορίες κάλυψης μπορούν να αποθηκευτούν σε διαφορετικά σημεία για διαφορετικές γλώσσες προγραμματισμού, επομένως κάθε γλώσσα έχει τη δική της ενότητα για τη ρύθμιση. Το έργο μας χρησιμοποιεί Typescript, οπότε χρειαζόμαστε μια ενότητα ρυθμίσεων μόνο για αυτό:

σόναρ-έργο.ιδιοκτησίες:

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

Όλα είναι έτοιμα για την πρώτη εκκίνηση του σαρωτή. Θα ήθελα να σημειώσω ότι το έργο είναι SonarΤο e δημιουργείται αυτόματα την πρώτη φορά που εκτελείτε το σαρωτή για ένα συγκεκριμένο έργο. Σε επόμενους χρόνους, θα συγκεντρωθούν πληροφορίες για να δούμε τη δυναμική των αλλαγών στις παραμέτρους του έργου με την πάροδο του χρόνου.

Λοιπόν, ας χρησιμοποιήσουμε την εντολή που δημιουργήθηκε νωρίτερα πακέτο.json:

yarn run sonar 

Σημείωση: μπορείτε επίσης να χρησιμοποιήσετε την παράμετρο -X για πιο λεπτομερή καταγραφή.

Εάν ο σαρωτής εκκινήθηκε για πρώτη φορά, τότε θα γίνει λήψη πρώτα του δυαδικού αρχείου του ίδιου του σαρωτή. Μετά από αυτό ξεκινά και ξεκινά τη σάρωση του διακομιστή Sonar"α για εγκατεστημένα πρόσθετα, υπολογίζοντας έτσι την υποστηριζόμενη γλώσσα. Φορτώνονται επίσης διάφορες άλλες παράμετροι για τη λειτουργία του: προφίλ ποιότητας, ενεργοί κανόνες, αποθήκη μετρήσεων, κανόνες διακομιστή.

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Σημείωση: Δεν θα σταθούμε λεπτομερώς σε αυτά στο πλαίσιο αυτού του άρθρου, αλλά μπορείτε πάντα να επικοινωνήσετε με επίσημες πηγές.

Στη συνέχεια, ξεκινά η ανάλυση φακέλου src για τη διαθεσιμότητα των αρχείων πηγής για όλες τις υποστηριζόμενες γλώσσες (εάν δεν ορίζεται ρητά μια συγκεκριμένη), με την επακόλουθη ευρετηρίασή τους.

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Στη συνέχεια ακολουθούν διάφορες άλλες αναλύσεις, στις οποίες δεν επικεντρωνόμαστε σε αυτό το άρθρο (για παράδειγμα, όπως το linting, ο εντοπισμός διπλασιασμού κώδικα κ.λπ.).

Στο τέλος της εργασίας του σαρωτή, όλες οι πληροφορίες που συλλέγονται συγκεντρώνονται, αρχειοθετούνται και αποστέλλονται στον διακομιστή.

Μετά από αυτό, μπορούμε ήδη να δούμε τι συνέβη στη διεπαφή ιστού:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Όπως βλέπουμε, κάτι λειτούργησε, και μάλιστα δείχνει κάποιο είδος κάλυψης, αλλά δεν ταιριάζει με το δικό μας υπάρχει-κανω ΑΝΑΦΟΡΑ.

Ας το καταλάβουμε. Ας δούμε το έργο με περισσότερες λεπτομέρειες, κάντε κλικ στην τιμή κάλυψης και «πέφτουμε» σε μια λεπτομερή αναφορά αρχείου:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Εδώ βλέπουμε, εκτός από τον κύριο, εξεταζόμενο φάκελο HelloWorld.vue, υπάρχει και αρχείο κύρια.τς, που χαλάει όλη την εικόνα της κάλυψης. Πώς όμως το αποκλείσαμε από τον υπολογισμό της κάλυψης. Ναι, όλα είναι σωστά, αλλά ήταν στο επίπεδο υπάρχει, αλλά ο σαρωτής το ευρετηρίασε, οπότε κατέληξε στους υπολογισμούς του.

Ας το διορθώσουμε αυτό:

σόναρ-έργο.ιδιοκτησίες:

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

Θα ήθελα να κάνω μια διευκρίνιση: εκτός από τους φακέλους που καθορίζονται σε αυτήν την παράμετρο, προστίθενται επίσης όλοι οι φάκελοι που αναφέρονται στην παράμετρο βυθόμετρο.δοκιμή.συμπεριλήψεις.

Μετά την εκκίνηση του σαρωτή, βλέπουμε τις σωστές πληροφορίες:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Ας δούμε το επόμενο σημείο - Προφίλ ποιότητας. Μίλησα παραπάνω για υποστήριξη Sonarαπό πολλές γλώσσες ταυτόχρονα. Αυτό ακριβώς βλέπουμε. Αλλά ξέρουμε ότι το έργο μας είναι γραμμένο TS, γιατί λοιπόν να καταπονήσετε τον σαρωτή με περιττούς χειρισμούς και ελέγχους. Θα ορίσουμε τη γλώσσα για ανάλυση προσθέτοντας μία ακόμη παράμετρο στο αρχείο διαμόρφωσης Sonar'ΕΝΑ:

σόναρ-έργο.ιδιοκτησίες:

...
sonar.language=ts
...

Ας τρέξουμε ξανά τον σαρωτή και ας δούμε το αποτέλεσμα:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Η κάλυψη είχε φύγει τελείως.

Αν κοιτάξουμε το αρχείο καταγραφής του σαρωτή, μπορούμε να δούμε την ακόλουθη γραμμή:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Δηλαδή, τα αρχεία του έργου μας απλά δεν είχαν ευρετηριαστεί.

Η κατάσταση έχει ως εξής: υποστηρίζεται επίσημα VueJs βρίσκεται στο πρόσθετο SonarJSποιος είναι υπεύθυνος για Javascript.

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Αλλά αυτή η υποστήριξη δεν υπάρχει στο πρόσθετο SonarTS για TS, για το οποίο άνοιξε επίσημο εισιτήριο στο bug tracker Sonar'ΕΝΑ:

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

Ακολουθούν μερικές απαντήσεις από έναν από τους εκπροσώπους των προγραμματιστών του SonarQube, που επιβεβαιώνουν αυτό το γεγονός.

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Αλλά όλα λειτούργησαν για εμάς, αντιλέγεις. Ναι είναι, ας το δοκιμάσουμε λίγο "άμαξα προς μίσθωση".
Αν υπάρχει υποστήριξη .vue-αρχεία Sonar«Ω, τότε ας προσπαθήσουμε να του πούμε να τα θεωρήσει ως Typescript.

Ας προσθέσουμε μια παράμετρο:

σόναρ-έργο.ιδιοκτησίες:

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

Ας εκκινήσουμε τον σαρωτή:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Και, voila, όλα επανήλθαν στο κανονικό, και με ένα μόνο προφίλ για Typescript. Δηλαδή καταφέραμε να λύσουμε το πρόβλημα στην υποστήριξη VueJs+TS για soundQube.

Ας προσπαθήσουμε να προχωρήσουμε περισσότερο και να βελτιώσουμε λίγο τις πληροφορίες κάλυψης.

Τι έχουμε κάνει μέχρι τώρα:

  • προστέθηκε στο έργο Sonar-ερευνητής;
  • στήνω υπάρχει για τη δημιουργία πληροφοριών κάλυψης·
  • διαμορφώθηκε Sonar-ερευνητής;
  • έλυσε το πρόβλημα υποστήριξης .vue-αρχεία + Typescript.

Εκτός από την κάλυψη δοκιμής, υπάρχουν και άλλα ενδιαφέροντα χρήσιμα κριτήρια για την ποιότητα του κώδικα, για παράδειγμα, ο διπλασιασμός κώδικα και ο αριθμός των γραμμών (που εμπλέκονται στον υπολογισμό των συντελεστών που σχετίζονται με την πολυπλοκότητα του κώδικα) του έργου.

Στην τρέχουσα εφαρμογή του πρόσθετου για εργασία με TS (SonarTS) δεν θα δουλέψει CPD (Ανιχνευτής αντιγραφής επικόλλησης) και καταμέτρηση γραμμών κώδικα .vue-αρχεία.

Για να δημιουργήσετε μια συνθετική κατάσταση αντιγραφής κώδικα, απλώς αντιγράψτε το αρχείο στοιχείου με διαφορετικό όνομα και προσθέστε το στον κώδικα κύρια.τς μια εικονική συνάρτηση και αντιγράψτε την με διαφορετικό όνομα. Για έλεγχο για αντιγραφή όπως στο .vue, και στο .ts -αρχεία.

main.ts:

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

Για να το κάνετε αυτό, πρέπει να σχολιάσετε προσωρινά τη γραμμή διαμόρφωσης:

σόναρ-έργο.ιδιοκτησίες:

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

Ας επανεκκινήσουμε το σαρωτή μαζί με τη δοκιμή:

yarn test && yarn run sonar

Φυσικά και θα πέσει η κάλυψή μας, αλλά τώρα δεν μας ενδιαφέρει αυτό.

Όσον αφορά την αντιγραφή γραμμών κώδικα, θα δούμε:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Για έλεγχο θα χρησιμοποιήσουμε CPD- χρησιμότητα - jscpd:

npx jscpd src

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Για γραμμές κώδικα:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Ίσως αυτό να επιλυθεί σε μελλοντικές εκδόσεις προσθηκών SonarJS(TS). Θα ήθελα να σημειώσω ότι αρχίζουν σταδιακά να συγχωνεύουν αυτά τα δύο πρόσθετα σε ένα SonarJS, που νομίζω ότι είναι σωστό.

Τώρα ήθελα να εξετάσω την επιλογή βελτίωσης των πληροφοριών κάλυψης.

Μέχρι στιγμής μπορούμε να δούμε δοκιμαστική κάλυψη σε ποσοστιαίες τιμές για ολόκληρο το έργο, και συγκεκριμένα για αρχεία. Αλλά είναι δυνατό να επεκταθεί αυτός ο δείκτης με πληροφορίες σχετικά με την ποσότητα μονάδα-δοκιμές για το έργο, καθώς και στο πλαίσιο αρχείων.

Υπάρχει μια βιβλιοθήκη που μπορεί υπάρχει-μετατροπή της αναφοράς σε μορφή για Sonar'ΕΝΑ:
γενικά δεδομένα δοκιμών - https://docs.sonarqube.org/display/SONAR/Generic+Test+Data.

Ας εγκαταστήσουμε αυτήν τη βιβλιοθήκη στο έργο μας:

yarn add jest-sonar-reporter

Και προσθέστε το στη διαμόρφωση υπάρχει:

package.json:

…
"testResultsProcessor": "jest-sonar-reporter"
…

Τώρα ας εκτελέσουμε το τεστ:

yarn test

Μετά από αυτό θα δημιουργηθεί ένα αρχείο στη ρίζα του έργου test-report.xml.

Ας το χρησιμοποιήσουμε στη διαμόρφωση Sonar'ΕΝΑ:

σόναρ-έργο.ιδιοκτησίες:

…
sonar.testExecutionReportPaths=test-report.xml
…

Και επανεκκινήστε το σαρωτή:

yarn run sonar

Ας δούμε τι έχει αλλάξει στη διεπαφή Sonar'ΕΝΑ:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Και τίποτα δεν έχει αλλάξει. Το γεγονός είναι ότι το Sonar δεν θεωρεί τα αρχεία που περιγράφονται στην αναφορά Jest ως αρχεία μονάδα- τεστ. Για να διορθώσουμε αυτήν την κατάσταση, χρησιμοποιούμε την παράμετρο διαμόρφωσης Sonar βυθόμετρο.δοκιμές, στο οποίο θα αναφέρουμε ρητά τους φακέλους με δοκιμές (προς το παρόν έχουμε μόνο έναν):

σόναρ-έργο.ιδιοκτησίες:

…
sonar.tests=src/components/__tests__
…

Ας επανεκκινήσουμε το σαρωτή:

yarn run sonar

Ας δούμε τι έχει αλλάξει στη διεπαφή:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Τώρα είδαμε τον αριθμό των δικών μας μονάδα-δοκιμάζει και, έχοντας αποτύχει κάνοντας κλικ στο εσωτερικό, μπορούμε να δούμε την κατανομή αυτού του αριθμού μεταξύ των αρχείων του έργου:

Ενσωμάτωση έργου VueJS+TS με το SonarQube

Συμπέρασμα

Έτσι, εξετάσαμε ένα εργαλείο για συνεχή ανάλυση soundQube. Ενσωματώσαμε επιτυχώς σε αυτό ένα έργο γραμμένο VueJs+TS. Διορθώθηκαν ορισμένα προβλήματα συμβατότητας. Αυξήσαμε το περιεχόμενο πληροφοριών του δείκτη κάλυψης δοκιμής. Σε αυτό το άρθρο εξετάσαμε μόνο ένα από τα κριτήρια ποιότητας κώδικα (ίσως ένα από τα κύρια), αλλά soundQube υποστηρίζει άλλα κριτήρια ποιότητας, συμπεριλαμβανομένων των δοκιμών ασφάλειας. Αλλά δεν είναι όλες αυτές οι λειτουργίες πλήρως διαθέσιμες στο κοινότητα-εκδόσεις. Ένα από τα ενδιαφέροντα και χρήσιμα χαρακτηριστικά είναι η ενσωμάτωση soundQube με διάφορα συστήματα διαχείρισης αποθετηρίου κώδικα, όπως το GitLab και το BitBucket. Να αποτρέψω αίτηση έλξης συγχώνευσης«α στον κύριο κλάδο του αποθετηρίου όταν η κάλυψη υποβαθμίζεται. Αλλά αυτή είναι μια ιστορία για ένα εντελώς διαφορετικό άρθρο.

PS: Όλα όσα περιγράφονται στο άρθρο με τη μορφή κώδικα είναι διαθέσιμα στο το πιρούνι μου.

Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα. Συνδεθείτε, Σας παρακαλούμε.

Χρησιμοποιείτε την πλατφόρμα SonarQube:

  • 26,3%Ναι 5

  • 15,8%Νο3

  • 15,8%Άκουσα για αυτήν την πλατφόρμα και θέλω να χρησιμοποιήσω3

  • 10,5%Έχω ακούσει για αυτήν την πλατφόρμα και δεν θέλω να τη χρησιμοποιήσω2

  • 0,0%Χρησιμοποιώ διαφορετική πλατφόρμα0

  • 31,6%Πρώτη φορά άκουσα για αυτήν6

Ψήφισαν 19 χρήστες. 3 χρήστες απείχαν.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο