Code Coverage unter Linux

Posted by : MOnsDaR | Samstag, 24. April 2010 | Published in

Um zu testen, ob die geschriebenen Unittests wirklich alle wichtigen Teile des Codes abdecken, führt man Coverage-Tests durch. Hierbei wird der Test ausgeführt und geloggt, welche Zeilen im Code angesprungen werden.

Coverage1

Im Bild ist ein Coverage-Report abgebildet, bei dem der if-Zweig des Programmes nicht berücksichtigt wird. Der zugehörige Unittest hat also nur einen Teil des Codes überprüft und sollte erweitert werden.

Doch womit generiert man Coverage Reports?

Unter Linux gibt es das Tool gcov, welches in Zusammenarbeit mit gcc textuelle Auswertungen erstellen kann.

 Coverage2

Diese Reports sind leider nicht sehr informativ, sie lassen sich nicht besonders gut lesen und es fehlt eine Zusammenfassung der Coverage.

Abhilfe schafft hier das Tool lcov, welches bei vielen Distributionen in den Repositories liegt. Es verarbeitet die Coverage-Informationen des gcc zu einer info-Datei, die man dann mit dem zugehörigen Tool genhtml in einen HTML-Report konvertieren kann.

Der erste Screenshot dieses Artikels zeigt einen Teil des Beispielreports auf der lcov-Webpage. Auf dieser Seite befindet sich auch eine Anleitung für die Report-Generierung mit lcov.

KDevelop 4 RC3 veröffentlicht

Posted by : MOnsDaR | Sonntag, 18. April 2010 | Published in

Freitag erschien der dritte RC von KDevelop4. Bis zur finalen Veröffentlichung Anfang Mai ist es also nicht mehr lang hin.

Wer vorab schonmal einen Blick riskieren möchte, findet HIER eine Schritt für Schritt Anleitung zur Installation unter Linux. Wenn man zusätzlich noch die Requirements beachtet, klappt eigentlich alles ohne Probleme.

Ich habe den RC1 bereits auf der Arbeit kompiliert und im Einsatz. Die Daten, auf denen ich arbeite, sind natürlich alle soweit gesichert. Bisher gab es keine Probleme.

Im Vergleich zur Beta-Version sind allerdings einige Funktionen herausgefallen. So habe ich beispielsweise noch keine Möglichkeit gefunden, gcov einzusetzen. Da derzeit allerdings wöchentlich neue Versionen mit neuen Features erscheinen, werde ich zunächst auf die Release-Version warten.

Einige Funktionen lassen sich über Plugins nachrüsten. Hierfür gibt es ein Repository “extra-plugins”. Im KDevelop-Wiki befindet sich eine (veraltete?) Anleitung, wie man beispielsweise das PHP-Plugin bauen kann.

Netzwerk: Endgültige Lösung

Posted by : MOnsDaR | | Published in

Nach dem ich HIER schon sehr zuversichtlich war, dass das Problem soweit gelöst ist, taten sich in den folgenden Wochen dieselben Probleme erneut auf. Nachdem der Netgear-Support schon soweit gegangen ist, ein komplettes Abbild meiner Router-Konfiguration anzufordern, konnte weiterhin keine Lösung erreicht werden.

Letzte Woche bekam ich dann abschließend eine Email, in der mir vorgeschlagen wurde, den kaputten Router einzuschicken. Nach dem Eintreffen bei Netgear würde mir umgehend ein Neugerät bereitgestellt werden. Das ich in dem Fall locker eine Woche ohne Netz wäre, schien dort niemanden zu stören.

Auch die zweite Lösung, bei der ich das Neugerät vor dem Verschicken meines kaputten Routers bekäme, war nicht wirklich zumutbar, hätte ich in dem Fall doch 30€ zusätzlich zahlen sollen. Vor dem Hintergrund, dass der Router an sich nur 40€ wert ist, ein lächerlicher Vorschlag.

Ich werde mir also selbst einen neuen Router zulegen (diesmal mit integriertem DSL-Modem). Den Netgear-Router kann man vielleicht irgendwann nochmal gebrauchen.

Mit dem D-Link DSL-2741 habe ich hoffentlich einen würdigen Ersatz gefunden. Alle von mir gesichteten Testberichte fielen unterm Strich positiv aus.

KDevelop 4 – Intellisense

Posted by : MOnsDaR | Samstag, 13. März 2010 | Published in

Intellisense, teils auch CodeCompletion oder AutoCompletion genannt, ist ein Feature, dass einem viel Arbeit ersparen kann. Der Programmierer schreibt die ersten Buchstaben eines Wortes und auf Tastendruck werden ihm alle zu den Startbuchstaben passenden Elemente (Methoden, Attribute, Datentypen etc) angezeigt.

Während in der Windowswelt mit dem Microsoft Visual Studio eine mächtige IDE existiert, die Intellisense sehr umfangreich unterstützt, ist dieses Feature in der Linux-Welt leider bei vielen Editoren und IDEs schlecht bis garnicht implementiert. Während Kate lediglich Wörter vorschlägt, die im Dokument bereits vorhanden sind, ist das System in Eclipse CDT sehr langsam und es werden nicht alle Möglichkeiten angezeigt.

KDevelop 4 enthält ein sehr umfangreiches Intellisense. Im Code auf dem Screenshot habe ich in einer Testklasse mal den Buchstaben “a” getippt und das Intellisense aktiviert. Im Dialog werden dann verschiedene Attribute und Methoden gruppiert nach Zugriffsebene vorgeschlagen. Neben Elementen aus meiner Testklasse befinden sich auch lokale und globale Elemente in der Auflistung wieder.

intellisense

Weiterhin werden in C++ eingebaute Elemente angezeigt. Zuguterletzt werden in der Sektion “Auto Word Completion” Wörter angezeigt, die im aktuellen Dokument bereits vorkommen.

Klickt man eines der Elemente an, werden weitere Informationen angezeigt.

intellisense2

Zwar wird der zugehörige Doxygen-Kommentar auch angezeigt, doch wird dieser leider nicht geparsed. Hierdurch enthält der Intellisense-Dialog leider Formatierungsanweisungen wie \brief oder \param.

Neben dem Kommentar kann man sich anzeigen lassen, wo das Element deklariert und definiert ist, wo es genutzt wird und zu welcher Klasse es gehört.

Meiner Meinung nach ist das Intellisense von KDevelop 4 ein Herausstellungsmerkmal in der Linux-Welt und mit dem des Visual Studio vergleichbar. Wie steht ihr dazu? Kennt ihr andere, vielleicht bessere,  Intellisense-Systeme?

KDevelop 4 – Syntax Highlighting

Posted by : MOnsDaR | Donnerstag, 11. März 2010 | Published in

Ohne dieses Feature kommt kein Editor aus, der zum Programmieren geeignet sein soll: Durch Syntax Highlighting lässt sich die Lesbarkeit der Sourcen extrem steigern.

Umso ärgerlicher, wenn eine IDE die Hervorhebung nur begrenzt beherrscht oder sie schlecht konfigurierbar ist. Ein Negativbeispiel ist in diesem Fall das Eclipse (+CDT) für mich. Der Editor kommt mit einem sehr schlichten Highlighting daher, dass die Lesbarkeit meiner Meinung nach nur begrenzt erhöht. Der Hauptkritikpunkt ist allerdings hier die fehlende Unterstützung für andere Formate als C und C++-Sourcen. Diese ist lediglich über weitere Plugins zu erreichen und nicht einfach zu integrieren.

In größeren Projekten müssen neben den Sourcen in der jeweiligen Programmiersprache auch Dokumente in anderen Sprachen verfasst werden. Als Beispiel wäre hier die Doxygen-Syntax für eine generische Mainpage, die CMake-Dateien zum bauen des Projektes oder Bash-Scripte um das erstellte Projekt zu starten.

Was die Eclipse IDE in meinen Augen sehr unglücklich und wenn überhaupt über zusätzliche Plugins löst, bietet KDevelop 4 in vollem Umfang.

Es gibt kaum ein Format, das nicht farblich hervorgehoben werden kann. Von Sprachen wie Java und C++ bis hin zu exotischen Formaten wie Eiffel oder FreeBASIC. Im Screenshot sind mögliche Programmiersprachen aufgelistet.

syntax

Neben der Unterstützung von Programmiersprachen lassen sich wie im Screenshot erkennbar auch Konfigurationsdateien oder Assembla-Scripte farblich hervorheben.

Das Syntax Highlighting von C++ ist hierbei nicht wie in anderen Sprachen lediglich darauf begrenzt, bestimmte Schlüsselworte farblich hervorzuheben: Beispielsweise werden Variablennamen in unterschiedlichen Farben dargestellt, so dass man eine Variable schnell auch an Hand ihrer Farbe wiederfinden kann.

Im Screenshot wird das Objekt converter braun dargestellt.

syntax2

Gibt es weitere Dinge, die ein Syntax Highlighting System unterstützen muss? Welcher Editor bietet eurer Meinung nach optimales Highlighting?

Netzwerkprobleme: Fall gelöst?

Posted by : MOnsDaR | Samstag, 27. Februar 2010 | Published in

Falls du das erste mal hier liest, kannst du dich HIER und HIER darüber informieren, was mein WLAN-Netz für Probleme bereitet.

In den letzten Tagen habe ich wie vom Netgear-Support empfohlen verschiedene MTU-Größen ausprobiert. Ich kam zu folgenden Ergebnissen:

MTU von 1500: Dies ist die Standard-Einstellung mit er das Netz alle 1-2 Tage verschwand.

MTU von 1430: Diese Einstellung habe ich als erstes getestet. Ein großer Unterschied zur Standardeinstellung sollte doch auch die besten Ergebnisse zeigen habe ich mir gedacht. Dummerweise hielt das Netz mit dieser Einstellung keine 12 Stunden.

MTU von 1468: Ich war sehr überrascht, als ich nach 2 Tagen immernoch andere Hosts anpingen konnte. Die Ernüchterung folgte jedoch an Tag 3: Das Netz war mal wieder verschwunden.

MTU von 1492: Inzwischen läuft der Router seit 7 Tagen problemlos mit dieser MTU-size. Ich kann nach wie vor noch alle anderen Hosts anpingen. Ich bin gespannt, ob das auch noch längere Zeit so bleibt oder ob es ein glücklicher Zufall ist.

Habe dem Netgear-Support nun mitgeteilt, dass das Problem wahrscheinlich gelöst ist und ich mich nach etwas längerer Zeit nochmal melde.

C++-Entwicklung mit KDevelop 4

Posted by : MOnsDaR | Donnerstag, 25. Februar 2010 | Published in

Ich habe bereits einige C++ Entwicklungsumgebungen unter Linux getestet, doch bisher konnte mich keine wirklich überzeugen.

Es gibt für Linux eine Vielzahl von mehr oder weniger guten IDEs. Sie alle bringen vielversprechende Features wie Intellisense, Subversion-GUI oder eingebaute Debugger mit sich. Leider habe ich bisher keine IDE kennengelernt, mit der ich rundum zufrieden sein konnte. Entweder waren Features schlecht umgesetzt, halbfertig oder es fehlten grundlegende Dinge.

Früher oder später bin ich immer zu meiner Basis bestehend aus einem einfachen Texteditor (Kate), einem Terminal (Konsole) und dem Debugger gdb zurückgekehrt. Als Build-System wird CMake eingesetzt.

Vor circa einem Monat bin ich mehr durch Zufall über KDevelop 4 gestolpert. Bereits Anfang 2008 wurde die Entwicklung begonnen. Im April desselben Jahres erblickte die erste Alpha-Version das Tageslicht. Seitdem ist viel Zeit vergangen, man kann sich auf der Homepage des Projekts die Beta8 herunterladen. Ende März soll die Release-Version erscheinen.

KDevelop 4 benutzt als Basis Kate mit all seinen Vorzügen. Es bietet zusätzlich viele eigene Features, die aus dem Texteditor eine vollwertige Entwicklungsumgebung machen.

Alle Features in einem Artikel vorzustellen, würde wahrscheinlich Blogger explodieren lassen, weshalb ich in den folgenden Tagen nach und nach die Höhepunkte der IDE vorstelle. Seid gespannt, was da kommt.