<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Qube Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/qube/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/qube/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sun, 16 Apr 2023 07:11:33 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Qube Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/qube/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/25/erklaerung-jacoco/</link>
					<comments>https://ceosbay.com/2023/03/25/erklaerung-jacoco/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 25 Mar 2023 20:22:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Abdeckung]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[City]]></category>
		<category><![CDATA[Co]]></category>
		<category><![CDATA[Codeabdeckungsanalyse]]></category>
		<category><![CDATA[Coverage]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Ecl]]></category>
		<category><![CDATA[EclEmma]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[EMMA]]></category>
		<category><![CDATA[Fälle]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Gradle]]></category>
		<category><![CDATA[Grün]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Ja]]></category>
		<category><![CDATA[Jacoco]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Modular]]></category>
		<category><![CDATA[Modulare]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[Qube]]></category>
		<category><![CDATA[Rot]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Sonar]]></category>
		<category><![CDATA[SonarQube]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[TCP]]></category>
		<category><![CDATA[TDD]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testfall]]></category>
		<category><![CDATA[Testfälle]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1238</guid>

					<description><![CDATA[<p>JaCoCo ist ein Open-Source-Toolkit zur Analyse und Anzeige der Java-Codeabdeckung. Es wird unter der Eclipse Public License vertrieben. Man hat es als Ersatz für EMMA entwickelt, unter dem Dach des EclEmma Plugins für Eclipse. Im &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/">JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>JaCoCo ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Toolkit zur Analyse und Anzeige der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Codeabdeckung. Es wird unter der <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> Public License vertrieben. Man hat es als Ersatz für EMMA entwickelt, unter dem Dach des EclEmma Plugins für <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a>.</p>



<p>Im Grunde genommen handelt es sich dabei um zwei Arten von Tools, die zum einen Anweisungen dem <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Quellcode hinzufügen und dessen Neukompilierung einfordern und zum anderen Tools, die den Bytecode entweder vor oder während der Ausführung instrumentieren. Das Ziel von JaCoCo ist es, herauszufinden, welche Teile des Codes getestet werden, indem es die Codezeilen registriert, die man bei der Ausführung eines Tests ausführt. <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">TDD</a> bzw. <a href="https://ceosbay.com/2023/03/13/erklaerung-test-driven-development/" target="_blank" rel="noreferrer noopener">Test Driven Development</a> ist diesbezüglich ebenfalls ein gutes Stichwort.</p>



<h3 class="wp-block-heading">Features von JaCoCo</h3>



<ul class="wp-block-list">
<li>Abdeckungsanalyse von Anweisungen (C0), Verzweigungen (C1), Zeilen, Methoden, Typen und zyklomatischer Komplexität (McCabe-Metrik).</li>



<li>Basiert auf <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Bytecode und funktioniert daher auch ohne Quelldateien.</li>



<li>Einfache Integration durch <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Agent-basierte On-the-fly-Instrumentierung. Andere Integrationsszenarien wie benutzerdefinierte class loader sind über die API möglich.</li>



<li><a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>-unabhängig: Reibungslose Integration in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/" target="_blank" rel="noreferrer noopener">VM</a>-basierte Anwendungen wie einfache <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Programme, OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>, Web-Container oder EJB-Server.</li>



<li>Kompatibel mit allen freigegebenen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Klassendateiversionen.</li>



<li>Unterstützung für verschiedene JVM-Sprachen.</li>



<li>Verschiedene Berichtsformate (<a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>, <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>, CSV).</li>



<li>Remote-Protokoll und JMX-Steuerung zur Anforderung von Ausführungsdaten-Dumps vom Coverage Agent zu jedem beliebigen Zeitpunkt.</li>



<li>Ant-Tasks zum Sammeln und Verwalten von Ausführungsdaten und zum Erstellen strukturierter Abdeckungsberichte.</li>



<li><a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>-Plug-in zum Sammeln von Abdeckungsinformationen und Erstellen von Berichten in <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>-Builds.</li>
</ul>



<p>JaCoCo bietet die Instructions, Line- und Branchabdeckung. Im Gegensatz zu beispielsweise Atlassian Clover und OpenClover, die eine Instrumentierung des Quellcodes erfordern, kann JaCoCo <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Bytecode mit zwei verschiedenen Ansätzen instrumentieren:</p>



<ol class="wp-block-list" type="1">
<li>JCov on the fly, während der Code mit einem <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Agenten ausgeführt wird beispielsweise wie Cobertura und JCov vor der Ausführung (offline)</li>



<li>Man kann es aber auch so konfigurieren, dass man die gesammelten Daten in einer Datei speichert oder via TCP versendet. Im Gegensatz zu Cobertura und EMMA ist die Unterstützung von so ziemlich allen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Versionen ab der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Version 7 gewährleistet.</li>
</ol>



<h3 class="wp-block-heading">Tools, die JaCoCo verwenden oder enthalten</h3>



<p>Einige davon habe ich bereits in diversen Beiträgen thematisiert. Mit einem Klick auf das jeweilige Tool kommt man auf den jeweiligen Beitrag.</p>



<ul class="wp-block-list">
<li><a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/" target="_blank" rel="noreferrer noopener">SonarQube</a> JaCoCo Plugin &#8211; Standardmäßig für Code Abdeckungsanalysen innerhalb der Code-Qualitätsmanagement-Plattform</li>



<li>EclEmma <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> (Software) Code Coverage Plugin</li>



<li><a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Jenkins</a> JaCoCo Plugin</li>



<li>Netbeans JaCoCo support</li>



<li><a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ IDEA</a> (Seit Version 11)</li>



<li>Gradle JaCoCo Plugin</li>



<li>Visual Studio Team Services</li>



<li>TeamCity</li>
</ul>



<h3 class="wp-block-heading">Fazit</h3>



<p>JaCoCo bietet sich für die Codeabdeckungsanalyse bei der modularen Softwareentwicklung bzw. bei den Unit Tests an. Die Abdeckungsgrade geben an, wie viele Anweisungen, Zweige usw. die Tests durchlaufen. Auf Basis der so gewonnenen Erkenntnisse kann man weitere sinnvolle Testfälle ermitteln oder aber nicht beanspruchten bzw. toten Code entfernen. Es gibt kein allgemeingültiges Mindestmaß an Codeabdeckung. Man definiert die jeweils erforderliche Testabdeckung in Anbetracht des Anwendungsfalls nach einer Risikoeinschätzung sowie der eigenen Entwickler-Fähigkeiten.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/25/erklaerung-jacoco/">JaCoCo &#8211; Messen und Optimieren von Testabdeckung für robuste Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/25/erklaerung-jacoco/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1238</post-id>	</item>
		<item>
		<title>SonarQube &#8211; Das Code-Qualitätsmanagement-Tool</title>
		<link>https://ceosbay.com/2023/03/17/erklaerung-sonarqube/</link>
					<comments>https://ceosbay.com/2023/03/17/erklaerung-sonarqube/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 17 Mar 2023 16:12:48 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[1061]]></category>
		<category><![CDATA[1998]]></category>
		<category><![CDATA[Analyse]]></category>
		<category><![CDATA[Anwendung]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Checkstyle]]></category>
		<category><![CDATA[Cobol]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codebasis]]></category>
		<category><![CDATA[Entwicklungsprozess]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[FindBugs]]></category>
		<category><![CDATA[Flex]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Governance]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[IEEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Komplexität]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[PMD]]></category>
		<category><![CDATA[Prüfung]]></category>
		<category><![CDATA[Qube]]></category>
		<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Quelle]]></category>
		<category><![CDATA[Quelltext]]></category>
		<category><![CDATA[Rechner]]></category>
		<category><![CDATA[Richtlinien]]></category>
		<category><![CDATA[Schnittstellen]]></category>
		<category><![CDATA[Schulden]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Sonar]]></category>
		<category><![CDATA[SonarQube]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Standard]]></category>
		<category><![CDATA[Sting]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Überprüfen]]></category>
		<category><![CDATA[Zyklomatisch]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1176</guid>

					<description><![CDATA[<p>SonarQube früher Sonar, ist eine Plattform für die statische Analyse und Bewertung der technischen Qualität von Quelltext bzw. Code. SonarQube analysiert den Quelltext hinsichtlich verschiedener Qualitätsmerkmale und stellt die Ergebnisse über eine Website dar. SonarQube &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/">SonarQube &#8211; Das Code-Qualitätsmanagement-Tool</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>SonarQube früher Sonar, ist eine Plattform für die statische Analyse und Bewertung der technischen Qualität von Quelltext bzw. Code. SonarQube analysiert den Quelltext hinsichtlich verschiedener Qualitätsmerkmale und stellt die Ergebnisse über eine Website dar. SonarQube ist in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> programmiert, unterstützt aber neben der Analyse von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Anwendungen mit entsprechenden Plugins unter anderem die Programmiersprachen <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, Groovy, Flex, PHP, PL/SQL, C#, Cobol und die des .Net-Frameworks.</p>



<h3 class="wp-block-heading">Wie funktioniert SonarQube?</h3>



<p><strong>SonarQube besteht aus drei Komponenten</strong></p>



<ol class="wp-block-list" type="1">
<li>Einem Modul für Build-Management-Tools wie <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Apache Maven</a> oder Apache Ant. (Hauptsächlich für die Analyse des Quelltextes hinsichtlich verschiedener Qualitätsmerkmale.)</li>



<li>Einer Datenbank, für Speicherung der Ergebnisse der Qualitätsanalyse.</li>



<li>Einer Website für die visuelle Darstellung, Auswertung und das Management der Qualitätsanalyse-Ergebnisse.</li>
</ol>



<p>Durch diese Architektur kann man sowohl eine Prüfung des Quelltextes auf dem Entwicklungsrechner ermöglichen als auch eine Einbindung von SonarQube in den Entwicklungsprozess gewährleisten. Dies unterstützt die Ermittlung der Qualitätsmetriken auf einem Build-Server für die kontinuierliche Integration.</p>



<p>SonarQube analysiert den Quelltext hinsichtlich der Abdeckung durch Modultests, checkt den Quellcode nach doppeltem Code und in Bezug auf die Komplexität. Auch werden unter anderem potenzielle Fehler im Code, Kodier-Richtlinien als auch Kommentare überprüft.</p>



<h3 class="wp-block-heading">Modularer Aufbau und Erweiterungen</h3>



<p>SonarQube ist modular aufgebaut und integriert selbst einige bekannte Entwicklungswerkzeuge zur Analyse der Codequalität, darunter PMD und Checkstyle für die Erkennung von doppeltem Code für die Prüfung von Kodier-Richtlinien. Damit wird unter anderem auch nach ineffizientem Code gesuche. FindBugs dient beispielsweise zum Aufdecken potenzieller Fehler sowie Surefire und Cobertura zur Messung der Qualität der Modultests.</p>



<p>Diese Werkzeuge nutzen entsprechend ihrer Natur und Einsatzgebiete Metriken, um die jeweiligen Auswertungen bzw. Statistiken zu erzeugen. Der Name „Metrik“ trägt jedoch wenig Bedeutung von dem in sich, was eine Metrik ausmacht. Schlägt man nämlich nach woher der Name kommt, landet man im Lateinischen: „ars metrica„, die Lehre von den Maßen. Fragt man jedoch das Institute of Electrical and Electronics Engineers, was eine Softwaremetrik ist, erhält man folgende Antwort:</p>



<p>„software quality metric: A function whose inputs are software data and whose output is a single numerical value that can be interpreted as the degree to which software possesses a given attribute that affects its quality.“ „Eine Softwarequalitätsmetrik ist eine Funktion, die eine Software-Einheit in einen Zahlenwert abbildet, der als Erfüllungsgrad einer Qualitätseigenschaft der Software-Einheit interpretierbar ist.“ – IEEE Standard 1061, 1998</p>



<p>Folglich bedeutet dies, dass es sich bei einer Metrik am Ende des Tages um eine Funktion handelt, die für beliebige Eingaben Zahlen erzeugt. Die Beschaffenheit ist so, dass sie, nur so&nbsp;</p>



<p>lange sie von derselben Funktion erzeugt wurden, vergleichbar sind. Dadurch kann man Rückschlüsse auf die Eingabe mit Hinblick auf die Funktion erzielen.</p>



<p>Ein Beispiel dafür ist die McCabe-Metrik, auch zyklomatische Komplexität genannt. Diese sehr grundlegende Metrik berechnet die Anzahl der unterschiedlichen Pfade durch ein Stück Code. Die Formel ist relativ einfach: Es wird die Anzahl an Kontrollstrukturen wie if, while, case und boolescher Operatoren wie &amp;&amp; und || summiert und nochmals mit 1 addiert. Möchte man diese Information nochmals anhand eines Beispiels betrachten, sieht es folgendermaßen aus:</p>



<pre class="wp-block-code"><code>String nameDesWochenTags(int nr) {
  switch(nr) {
    case 1: return "Montag";
    case 2: return "Dienstag";
    case 3: return "Mittwoch";
    case 4: return "Donnerstag";
    case 5: return "Freitag";
    case 6: return "Samstag";
    case 7: return "Sonntag";
  }
  return "";
}</code></pre>



<p>Diese relativ einfache Methode gibt den Namen eines Wochentages entsprechend seiner 1-indizierten Position innerhalb der Woche zurück. Ihre zyklomatische Komplexität beträgt 8. Zumal 1 + 7 x case. Dies ist ein verhältnismäßig hoher Wert. Ein Maximalwert von 10 gilt als allgemein akzeptiert und ausreichend erprobt. Um also die Komplexität dieser Methode zu verringern, findet eine Refaktorisierung statt, die folgendermaßen aussehen kann:</p>



<pre class="wp-block-code"><code>String nameDesWochenTags(int nr) {
  String&#91;] names = new String&#91;] {
    "Montag", "Dienstag", "Mittwoch",
    "Donnerstag", "Freitag", "Samstag",
    "Sonntag"
  };
  if(nr) &gt; 0 &amp;&amp; &lt;= names.length) {
    return names&#91;nr - 1];
  }
  return "";
}</code></pre>



<p>Die zyklomatische Komplexität dieser Methode beträgt 3. Zumal 1 + 1 x if + 1 x &amp;&amp;. Durch den unterschiedlichen Ansatz kann man die Komplexität verringern. Dennoch ist es relativ unstrittig, dass die erste Version leichter zu verstehen ist.</p>



<p>Will man nun also alle Tools gemeinsam benutzen, muss man alle konfigurieren und ihre Ergebnisse zusammenführen, damit sich ein Gesamtbild darstellen lässt. Außerdem kommt es dabei zwangsweise zu Dopplungen in ausgewerteten Metriken oder anderen Kennzahlen. PMD beispielsweise besitzt durch seinen relativ vagen Aufgabenbereich Überschneidungen im Hinblick auf Codestil mit checkstyle, während es aber auch genauso wie FindBugs auf toten Code achtet. An solchen und weiteren Stellen kann SonarQube Verbesserungen herbeiführen.</p>



<p>Neben der visuellen Anzeige der Ergebnisse der einzelnen Bereiche, ermöglicht SonarQube das Drill-Down der Ergebnisse bis auf die einzelne Metrik und Codezeile sowie die Verknüpfung der einzelnen Metriken sowie die Darstellung ihrer historischen Entwicklung in einer recht übersichtlichen grafischen Oberfläche.</p>



<p>Über einen ausgeklügelten Plugin-Mechanismus ist eine relativ einfache Integration von Erweiterungen möglich. Neben den Erweiterungen für die Analyse zusätzlicher Programmiersprachen gibt es Plugins für ergänzende Metriken, Governance, Schnittstellen zu Entwicklungsumgebungen, Visualisierungen, Integration sowie zur Berechnung der technischen Schuld(en).</p>



<h3 class="wp-block-heading">Fazit</h3>



<p>Ich arbeite noch nicht so lange mit SonarQube. Um genau zu sein, habe ich es mir erst heute das erste Mal angeschaut. Zusammenfassend kann ich folgendes sagen:</p>



<p>Statistiken sind zwar interessant und es kann Spaß machen, sich diese anzuschauen, doch ist eine statische Codeanalyse erst dann wirklich vollständig, wenn ein Mindestmaß an Interpretation hineingeflossen ist.</p>



<p>Die Codeanalyse liefert ein gutes Gefühl für die Codebasis. Erst so kann man fundierte Aussagen darüber treffen, welche Bereiche des Projekts besonders gefährdet, instabil oder verbesserungsfähig sind.</p>



<p>Regelmäßige Analysen können die Teammotivation erhöhen. Eine positive Issuebilanz am Ende eines Sprints und aufwärtszeigende Historiengraphen sollten gute Treiber für eine Gruppe Entwickler und ein Beweis für die eigene Leistung sein.</p>



<p>Alles in allem sind Analyseergebnisse immer gut als Argumentationsgrundlage. Mit Hilfe der Projekthistorie, die eine Auswahl gut darstellbarer Kennzahlen beinhaltet, kann man vor Kunden oder Entscheidern besser über ein eventuell nötiges technisches Release diskutieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/17/erklaerung-sonarqube/">SonarQube &#8211; Das Code-Qualitätsmanagement-Tool</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/17/erklaerung-sonarqube/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1176</post-id>	</item>
	</channel>
</rss>
