<?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>EclEmma Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/eclemma/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/eclemma/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sun, 16 Apr 2023 06:55:25 +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>EclEmma Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/eclemma/</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>
	</channel>
</rss>
