{"id":605,"date":"2010-04-12T20:16:54","date_gmt":"2010-04-12T19:16:54","guid":{"rendered":"http:\/\/blog.m-ri.de\/?p=605"},"modified":"2010-04-12T20:18:05","modified_gmt":"2010-04-12T19:18:05","slug":"mal-einen-ganz-anderen-blick-auf-seinen-code-werfen-mit-cppdepend","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2010\/04\/12\/mal-einen-ganz-anderen-blick-auf-seinen-code-werfen-mit-cppdepend\/","title":{"rendered":"Mal einen ganz anderen Blick auf seinen Code werfen mit CppDepend"},"content":{"rendered":"<p>Vor einiger Zeit habe ich versucht mit einem anderen Werkzeug mal den eigenen Code zu analysieren.<br \/>\nIch habe <strong><em>CppDepend<\/em> <\/strong>entdeckt.\u00a0 <a href=\"http:\/\/www.cppdepend.com\/\">http:\/\/www.cppdepend.com\/<\/a><\/p>\n<p>Gerade bei gro\u00dfen Projekten kann man schnell den \u00dcberblick verlieren und es ist schwierig die abh\u00e4ngigen Klassen und Objekte in Ihren Verbindungen zu sehen oder m\u00f6gliche Designprobleme nachtr\u00e4glich festzustellen. Oder den richtigen Ansatzpunkt f\u00fcr Reviews zu finden. Man hat manchmal das Gef\u00fchl, dass etwas nicht stimmt, aber man wei\u00df oft nicht genau was.<\/p>\n<p><em>CppDepend<\/em> kann helfen schlecht konstruierte Klassen zu finden,\u00a0Fehler in den Namenskonfentionen oder der Dokumentation\u00a0und gezielter auf notwendige Reviews hinzuweisen.<br \/>\nDurch eine eigene <a href=\"http:\/\/www.cppdepend.com\/Features.aspx\">Abfragesprache<\/a> ist es extrem einfach gro\u00dfe un\u00fcbersichtliche Funktionen zu finden. Klassen mit zyklischen Abh\u00e4ngigkeiten und extreme Vererbungstiefen aufzusp\u00fcren. Besonders einfach wird es zum Beispiel auch Namenskonventionen zu \u00fcberpr\u00fcfen. Die eigene Codebase wird durch die Abfragesprache analysierbar.<\/p>\n<p>Ich empfand die graphischen Darstellungen der eigenen Codebasis und die Ergebnisse der Abfragen in diesen Grafiken als extrem anschaulich und n\u00fctzlich. Weitaus mehr als manche tabellarische Analyse meines Codes.<\/p>\n<p>Einen guten Einblick was hier m\u00f6glich ist liefern die Case-Studies. Wie zum Beispiel die Analyse der MFC 8.0 (VC-2005) <a href=\"http:\/\/www.cppdepend.com\/MFC.aspx\">http:\/\/www.cppdepend.com\/MFC.aspx<\/a>. Man kann die MFC sicherlich nicht als Glanzst\u00fcck des OOP bezeichnen, umso mehr ist es mal interessant mit diesem Tool einen Blick auf die MFC zu werfen. Wem das nicht anschaulich genug ist kann sollte sich auch die anderen <a href=\"http:\/\/www.cppdepend.com\/CasesStudies.aspx\">Case-Studies <\/a>mal ansehen. Oder noch besser die Software 2 Wochen testen.<\/p>\n<p>Ein gutes Tool, aber leider nicht ganz billig, aber in jedem Fall mal einen Blick wert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vor einiger Zeit habe ich versucht mit einem anderen Werkzeug mal den eigenen Code zu analysieren. Ich habe CppDepend entdeckt.\u00a0 http:\/\/www.cppdepend.com\/ Gerade bei gro\u00dfen Projekten kann man schnell den \u00dcberblick verlieren und es ist schwierig die abh\u00e4ngigen Klassen und Objekte in Ihren Verbindungen zu sehen oder m\u00f6gliche Designprobleme nachtr\u00e4glich festzustellen. Oder den richtigen Ansatzpunkt f\u00fcr &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2010\/04\/12\/mal-einen-ganz-anderen-blick-auf-seinen-code-werfen-mit-cppdepend\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eMal einen ganz anderen Blick auf seinen Code werfen mit CppDepend\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[30,3,12,76],"tags":[370,226,136,374],"class_list":["post-605","post","type-post","status-publish","format-standard","hentry","category-c","category-programmieren","category-software","category-tools","tag-c","tag-code-analyse","tag-qualitaetssicherung","tag-tools"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/605","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=605"}],"version-history":[{"count":1,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/605\/revisions"}],"predecessor-version":[{"id":606,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/605\/revisions\/606"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=605"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=605"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=605"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}