{"id":69,"date":"2018-04-04T15:46:58","date_gmt":"2018-04-04T13:46:58","guid":{"rendered":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=69"},"modified":"2022-12-01T15:47:24","modified_gmt":"2022-12-01T14:47:24","slug":"werkzeuge-zur-erhaltung-der-softwarearchitektur-sonarqube-teil-12","status":"publish","type":"post","link":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/?p=69","title":{"rendered":"Werkzeuge zur Erhaltung der Softwarearchitektur &#8211; SonarQube &#8211; Teil 12"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">SonarQube<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Bei SonarQube handelt es sich um ein Serverprodukt, das eine sehr gute \u00dcbersicht f\u00fcr den manuellen Prozess bietet. Auch wird der zeitliche Verlauf von Regelverletzungen in einer Datenbank gespeichert, so dass die Historie gut zu verfolgen ist. Sonar ben\u00f6tigt mindestens einen eigenen Server, der \u00fcber Plugins erweitert wird und die Daten in einem DBMS ablegt. Die folgende Abbildung zeigt die Zusammenfassung eines Projektes in SonarQube<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"722\" src=\"https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar1-1024x722.png\" alt=\"\" class=\"wp-image-67\" srcset=\"https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar1-1024x722.png 1024w, https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar1-300x212.png 300w, https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar1-768x542.png 768w, https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar1.png 1175w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Wir benutzen derzeit SonarQube prim\u00e4r f\u00fcr den manuellen Sicherungsprozess, da die automatischen Regeln sehr gut durch die zuvor vorgestellten Werkzeuge in den Ablauf integriert sind. Sonar verwendet eine Vielzahl von Regeln und kann unter anderem auch auf die Regeln der bisherigen Werkzeuge zugreifen. F\u00fcr den manuellen Review Prozess ist besonders sch\u00f6n, dass bei Sonar<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>alles gut Integriert ist<\/li>\n\n\n\n<li>eine grafische Aufbereitung der Werte (auch St\u00e4dte) stattfindet<\/li>\n\n\n\n<li>der zeitlicher Verlauf in einer Datenbank abgelegt wird<\/li>\n\n\n\n<li>False\/Positives, die ein Hauptbestandteil des manuellen Prozesses sind, gut verwaltet werden<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Eine Darstellung von Werten als Stadt findet sich in der folgenden Grafik.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"577\" src=\"https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar2-1024x577.png\" alt=\"\" class=\"wp-image-68\" srcset=\"https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar2-1024x577.png 1024w, https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar2-300x169.png 300w, https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar2-768x433.png 768w, https:\/\/www.schoenberg-solutions.de\/arndtblog\/wp-content\/uploads\/2022\/12\/Sonar2.png 1446w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Au\u00dferdem bewertet SonarQube technischen Schulden in Arbeitszeit mit einer (aus meiner Sicht sehr einfachen) Metrik. Dies kommt h\u00e4ufig dem Management mehr entgegen, als Zahlen zu Bugs und Code-Smells. Aber Vorsicht, solche Werte k\u00f6nnen niemals sehr genau sein.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quality Gates<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SonarQube fasst die Ergebnisse der Projektanalysen zusammen und stellt sogenannt Quality Gates bereit. Diese k\u00f6nnen Sonar konfiguriert werden und beschreiben analog zu Jenkins eine Art &#8222;Gesundheitszustand&#8220; des Projekts. Quality Gates fassen Schwellwerte f\u00fcr verschiedene Bereiche zusammen<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ver\u00e4nderte Testabdeckung<\/li>\n\n\n\n<li>Regelverst\u00f6\u00dfe<\/li>\n\n\n\n<li>Neue blockierende Regelverst\u00f6\u00dfe<\/li>\n\n\n\n<li>Neue kritische Regelverst\u00f6\u00dfe<\/li>\n\n\n\n<li>Technical Debt Ratio on New Code<\/li>\n\n\n\n<li>Doppelter Quellcode<\/li>\n\n\n\n<li>usw.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Integration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>IDE (Plugin unvollst\u00e4ndig)<\/li>\n\n\n\n<li>Maven-Build<\/li>\n\n\n\n<li>Jenkins (Plugin defekt)\n<ul class=\"wp-block-list\">\n<li>Quality Gate Plugin<\/li>\n\n\n\n<li>https:\/\/issues.jenkins-ci.org\/browse\/JENKINS-43081<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Sonar-Server<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Die Plugins sind derzeit etwas &#8222;wackelig&#8220; und nicht zu 100% einsatzf\u00e4hig. Auch wegen dieser derzeit schlechten Plugin-Situation ist Sonar derzeit eher f\u00fcr den manuellen Prozess sinnvoll. Die Plugins f\u00fcr die IDE zeigen derzeit Fehler entsprechend der Konfiguration des Servers. Es ist m\u00f6glich Projekte mit den SonarQube Projekten zu \u201everbinden\u201c und somit die projektspezifischen Status einzusehen. Eine False\/Positiv Behandlung in der IDE ist aber derzeit nicht (mehr) m\u00f6glich.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">False\/Positive<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Eine der St\u00e4rken von SonarQube ist die False\/Positive Behandlung. Bei False\/Positives kann in Sonar festgehalten werden, warum es sich um einen False\/Positive handelt und die Begr\u00fcndung in einer Datenbank gespeichert werden. Danach gilt der False\/Positive als behandelt und erscheint nicht mehr in den Auswertungen.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Regelerweiterung<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Eigener Regelsatz \/ Selektion<\/li>\n\n\n\n<li>https:\/\/docs.sonarqube.org\/display\/SONAR\/Rules<\/li>\n\n\n\n<li>Import weiterer Regels\u00e4tze z.B. der bisher betrachteten Werkzeuge<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Fazit<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">SonarQube ist ein schickes Managementtool mit Integrationsschwierigkeiten. Nachdem die zuvor beschriebenen Werkzeuge in den QS Prozess aufgenommen wurden, sollte auch SonarQube insbesondere f\u00fcr den manuellen Prozess verwendet werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SonarQube Bei SonarQube handelt es sich um ein Serverprodukt, das eine sehr gute \u00dcbersicht f\u00fcr den manuellen Prozess bietet. Auch wird der zeitliche Verlauf von Regelverletzungen in einer Datenbank gespeichert, so dass die Historie gut zu verfolgen ist. Sonar ben\u00f6tigt mindestens einen eigenen Server, der \u00fcber Plugins erweitert wird und die Daten in einem DBMS [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-69","post","type-post","status-publish","format-standard","hentry","category-softwarearchitektur"],"_links":{"self":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/69","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=69"}],"version-history":[{"count":1,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/69\/revisions"}],"predecessor-version":[{"id":70,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=\/wp\/v2\/posts\/69\/revisions\/70"}],"wp:attachment":[{"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=69"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=69"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.schoenberg-solutions.de\/arndtblog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=69"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}