{"id":757,"date":"2011-12-13T19:45:00","date_gmt":"2011-12-13T19:45:00","guid":{"rendered":"http:\/\/www.javacodegeeks.com\/2012\/10\/my-testing-and-code-analysis-toolbox.html"},"modified":"2013-03-17T13:23:39","modified_gmt":"2013-03-17T11:23:39","slug":"my-testing-and-code-analysis-toolbox","status":"publish","type":"post","link":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html","title":{"rendered":"My Testing and Code Analysis Toolbox"},"content":{"rendered":"<div dir=\"ltr\" style=\"text-align: left\">Last week we kicked of a \u201cTesting Skill Group\u201d at <a href=\"http:\/\/www.lineas.de\/\">LINEAS<\/a>, a group for exchanging knowledge about testing. One question that came up over and over again in various flavors was: What tools are there for testing and analyzing your code? So here is my personal answer for this, in the approximately order I tend to introduce them into projects:<\/p>\n<p><a href=\"http:\/\/junit.org\/\">JUnit<\/a>: JUnit is pretty much the basis for everything else. Its THE unit testing framework for Java, with great integration in IDEs, build tools and CI Server. I don\u2019t take the term \u2018unit\u2019 to seriously though. I use JUnit to execute all other kinds of tests as well.<\/p>\n<p><a href=\"http:\/\/code.google.com\/p\/mockito\/\">Mockito<\/a>: There are many Mocking Frameworks out there but I prefer this one. It has nice DSLish API and I find it nice to use. Only drawback is that in some special cases the standard API doesn\u2019t work and one has to use an <a href=\"http:\/\/docs.mockito.googlecode.com\/hg\/latest\/org\/mockito\/Mockito.html#12\">alternative syntax<\/a>.<\/p>\n<p><a href=\"http:\/\/code.google.com\/p\/powermock\/\">PowerMock<\/a>: I actually try not to introduce this into projects. You need PowerMock if you want to mock constructors, static or final methods. If you need this, PowerMock gets the job done, but its better not to need it.<\/p>\n<p><a href=\"http:\/\/jenkins-ci.org\/\">Jenkins<\/a>: a free continuous integration server. Not exactly a work of beauty, but it works, is easy to setup and does everything I needed so far with the help of a couple of <a href=\"https:\/\/wiki.jenkins-ci.org\/display\/JENKINS\/Plugins#Plugins-Pluginsbytopic\">plugins<\/a>.<div style=\"display:inline-block; margin: 15px 0;\"> <div id=\"adngin-JavaCodeGeeks_incontent_video-0\" style=\"display:inline-block;\"><\/div> <\/div><\/p>\n<p><a href=\"http:\/\/checkstyle.sourceforge.net\/\">CheckStyle<\/a>: A static code analysis that finds lots of bad practices and can check lots of coding conventions too. Integrates in IDEs and CI server. There are other tools in this area which are worth considering: <a href=\"http:\/\/findbugs.sourceforge.net\/\">FindBugs<\/a> and <a href=\"http:\/\/pmd.sourceforge.net\/\">PMD<\/a>. You can also use Checkstyle in order to gather <a href=\"http:\/\/erik.doernenburg.com\/2008\/11\/how-toxic-is-your-code\/\">simple metrics about your code<\/a>.<\/p>\n<p><a href=\"http:\/\/clarkware.com\/software\/JDepend.html\">JDepend<\/a>: does static code analysis of the dependencies of your code. I use it to write tests against cycles between packages in the code and also in order to limit the dependencies to those I\u2019m willing to accept in the code base. Some time ago I found out there are some limitations in JDepend resulting in dependencies that JDepend misses (I think it doesn\u2019t consider classes in annotations or something). Therefore I\u2019m looking at <a href=\"http:\/\/depfind.sourceforge.net\/\">DependencyFinder<\/a>, which seems to be way more powerful, but is certainly harder to use. I actually build a little tool for <a href=\"https:\/\/github.com\/schauder\/degraph\">visualizing dependencies<\/a> based on DependencyFinder.<\/p>\n<p><a href=\"http:\/\/cobertura.sourceforge.net\/\">Cobertura<\/a>\/<a href=\"http:\/\/www.eclemma.org\/\">EclEmma<\/a>: Cobertura and <a href=\"http:\/\/emma.sourceforge.net\/\">Emma<\/a> are code coverage tools. I use them both. Emma in the form of EclEmma as an eclipse plugin and Cobertura in Jenkins, because we couldn\u2019t get Emma to work as we wanted on our Jenkins instance.<\/p>\n<p><a href=\"http:\/\/www.sonarsource.org\/\">Sonar<\/a>: It collects tons of metrics from your code and makes them available as a website. It actually to much numbers for my taste. In a serious project you can spend the whole day looking at numbers. What is really great about sonar is, that it tracks those numbers over time, so you can see if your average method length goes up or down over time. In some projects I configured a graph with the most important numbers plotted over time and added it to the main screen of Jenkins.<\/p>\n<p><strong><i>Reference: <\/i><\/strong><a href=\"http:\/\/blog.schauderhaft.de\/2011\/12\/11\/my-testing-and-code-analysis-toolbox\/\">My Testing and Code Analysis Toolbox<\/a> from our <a href=\"http:\/\/www.javacodegeeks.com\/p\/jcg.html\">JCG partner<\/a>&nbsp;Jens Schauder at the&nbsp;<a href=\"http:\/\/blog.schauderhaft.de\/\">schauderhaft<\/a> blog.<\/p>\n<p><strong><i>Related Articles :<\/i><\/strong><\/p>\n<ul>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/09\/rules-in-junit-49-beta-3.html\">Rules in JUnit 4.9 (beta 3)<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/10\/spring-3-testing-with-junit-4.html\">Spring 3 Testing with JUnit 4 &#8211; ContextConfiguration and AbstractTransactionalJUnit4SpringContextTests<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/11\/testing-techniques-not-writing-tests.html\">Testing Techniques &#8211; Not Writing Tests<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/11\/diminishing-returns-in-software.html\">Diminishing Returns in software development and maintenance<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/10\/services-practices-tools-that-should.html\">Services, practices &amp; tools that should exist in any software development house, part 1<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/06\/i-am-not-engineer-im-software-developer.html\">I am not an engineer &#8211; I\u2019m a software developer<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/03\/agile-software-development.html\">Agile software development recommendations for users and new adopters<\/a><\/li>\n<li><a href=\"http:\/\/www.javacodegeeks.com\/2011\/07\/java-tools-source-code-optimization-and.html\">Java Tools: Source Code Optimization and Analysis<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Last week we kicked of a \u201cTesting Skill Group\u201d at LINEAS, a group for exchanging knowledge about testing. One question that came up over and over again in various flavors was: What tools are there for testing and analyzing your code? So here is my personal answer for this, in the approximately order I tend &hellip;<\/p>\n","protected":false},"author":58,"featured_media":115,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[329,204,140,274,314,291,328,273],"class_list":["post-757","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-enterprise-java","tag-cobertura","tag-code-analysis","tag-findbugs","tag-junit","tag-mock","tag-powermock","tag-sonar","tag-testing"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>My Testing and Code Analysis Toolbox - Java Code Geeks<\/title>\n<meta name=\"description\" content=\"Last week we kicked of a \u201cTesting Skill Group\u201d at LINEAS, a group for exchanging knowledge about testing. One question that came up over and over again in\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"My Testing and Code Analysis Toolbox - Java Code Geeks\" \/>\n<meta property=\"og:description\" content=\"Last week we kicked of a \u201cTesting Skill Group\u201d at LINEAS, a group for exchanging knowledge about testing. One question that came up over and over again in\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html\" \/>\n<meta property=\"og:site_name\" content=\"Java Code Geeks\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/javacodegeeks\" \/>\n<meta property=\"article:published_time\" content=\"2011-12-13T19:45:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-03-17T11:23:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/findbugs-logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"150\" \/>\n\t<meta property=\"og:image:height\" content=\"150\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jens Schauder\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@http:\/\/twitter.com\/jensschauder\" \/>\n<meta name=\"twitter:site\" content=\"@javacodegeeks\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jens Schauder\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html\"},\"author\":{\"name\":\"Jens Schauder\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/4bcc3620404e78e5f185c955b7d072ba\"},\"headline\":\"My Testing and Code Analysis Toolbox\",\"datePublished\":\"2011-12-13T19:45:00+00:00\",\"dateModified\":\"2013-03-17T11:23:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html\"},\"wordCount\":610,\"commentCount\":3,\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/findbugs-logo.jpg\",\"keywords\":[\"Cobertura\",\"Code Analysis\",\"findbugs\",\"JUnit\",\"Mock\",\"PowerMock\",\"Sonar\",\"Testing\"],\"articleSection\":[\"Enterprise Java\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html\",\"name\":\"My Testing and Code Analysis Toolbox - Java Code Geeks\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/findbugs-logo.jpg\",\"datePublished\":\"2011-12-13T19:45:00+00:00\",\"dateModified\":\"2013-03-17T11:23:39+00:00\",\"description\":\"Last week we kicked of a \u201cTesting Skill Group\u201d at LINEAS, a group for exchanging knowledge about testing. One question that came up over and over again in\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#primaryimage\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/findbugs-logo.jpg\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2012\\\/10\\\/findbugs-logo.jpg\",\"width\":150,\"height\":150},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/2011\\\/12\\\/my-testing-and-code-analysis-toolbox.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Enterprise Java\",\"item\":\"https:\\\/\\\/www.javacodegeeks.com\\\/category\\\/java\\\/enterprise-java\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"My Testing and Code Analysis Toolbox\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#website\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"name\":\"Java Code Geeks\",\"description\":\"Java Developers Resource Center\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\"},\"alternateName\":\"JCG\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.javacodegeeks.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#organization\",\"name\":\"Exelixis Media P.C.\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.javacodegeeks.com\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/exelixis-logo.png\",\"width\":864,\"height\":246,\"caption\":\"Exelixis Media P.C.\"},\"image\":{\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/javacodegeeks\",\"https:\\\/\\\/x.com\\\/javacodegeeks\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.javacodegeeks.com\\\/#\\\/schema\\\/person\\\/4bcc3620404e78e5f185c955b7d072ba\",\"name\":\"Jens Schauder\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/db4b12cfee33130f1fa227423e7c1365ffb4208f0eb429cc72b114050a330fe7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/db4b12cfee33130f1fa227423e7c1365ffb4208f0eb429cc72b114050a330fe7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/db4b12cfee33130f1fa227423e7c1365ffb4208f0eb429cc72b114050a330fe7?s=96&d=mm&r=g\",\"caption\":\"Jens Schauder\"},\"sameAs\":[\"http:\\\/\\\/blog.schauderhaft.de\\\/\",\"http:\\\/\\\/www.linkedin.com\\\/profile\\\/view?id=215931217&trk=tab_pro\",\"https:\\\/\\\/x.com\\\/http:\\\/\\\/twitter.com\\\/jensschauder\"],\"url\":\"https:\\\/\\\/www.javacodegeeks.com\\\/author\\\/Jens-Schauder\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"My Testing and Code Analysis Toolbox - Java Code Geeks","description":"Last week we kicked of a \u201cTesting Skill Group\u201d at LINEAS, a group for exchanging knowledge about testing. One question that came up over and over again in","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html","og_locale":"en_US","og_type":"article","og_title":"My Testing and Code Analysis Toolbox - Java Code Geeks","og_description":"Last week we kicked of a \u201cTesting Skill Group\u201d at LINEAS, a group for exchanging knowledge about testing. One question that came up over and over again in","og_url":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html","og_site_name":"Java Code Geeks","article_publisher":"https:\/\/www.facebook.com\/javacodegeeks","article_published_time":"2011-12-13T19:45:00+00:00","article_modified_time":"2013-03-17T11:23:39+00:00","og_image":[{"width":150,"height":150,"url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/findbugs-logo.jpg","type":"image\/jpeg"}],"author":"Jens Schauder","twitter_card":"summary_large_image","twitter_creator":"@http:\/\/twitter.com\/jensschauder","twitter_site":"@javacodegeeks","twitter_misc":{"Written by":"Jens Schauder","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#article","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html"},"author":{"name":"Jens Schauder","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/4bcc3620404e78e5f185c955b7d072ba"},"headline":"My Testing and Code Analysis Toolbox","datePublished":"2011-12-13T19:45:00+00:00","dateModified":"2013-03-17T11:23:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html"},"wordCount":610,"commentCount":3,"publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/findbugs-logo.jpg","keywords":["Cobertura","Code Analysis","findbugs","JUnit","Mock","PowerMock","Sonar","Testing"],"articleSection":["Enterprise Java"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html","url":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html","name":"My Testing and Code Analysis Toolbox - Java Code Geeks","isPartOf":{"@id":"https:\/\/www.javacodegeeks.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#primaryimage"},"image":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#primaryimage"},"thumbnailUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/findbugs-logo.jpg","datePublished":"2011-12-13T19:45:00+00:00","dateModified":"2013-03-17T11:23:39+00:00","description":"Last week we kicked of a \u201cTesting Skill Group\u201d at LINEAS, a group for exchanging knowledge about testing. One question that came up over and over again in","breadcrumb":{"@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#primaryimage","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/findbugs-logo.jpg","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2012\/10\/findbugs-logo.jpg","width":150,"height":150},{"@type":"BreadcrumbList","@id":"https:\/\/www.javacodegeeks.com\/2011\/12\/my-testing-and-code-analysis-toolbox.html#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.javacodegeeks.com\/"},{"@type":"ListItem","position":2,"name":"Java","item":"https:\/\/www.javacodegeeks.com\/category\/java"},{"@type":"ListItem","position":3,"name":"Enterprise Java","item":"https:\/\/www.javacodegeeks.com\/category\/java\/enterprise-java"},{"@type":"ListItem","position":4,"name":"My Testing and Code Analysis Toolbox"}]},{"@type":"WebSite","@id":"https:\/\/www.javacodegeeks.com\/#website","url":"https:\/\/www.javacodegeeks.com\/","name":"Java Code Geeks","description":"Java Developers Resource Center","publisher":{"@id":"https:\/\/www.javacodegeeks.com\/#organization"},"alternateName":"JCG","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.javacodegeeks.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.javacodegeeks.com\/#organization","name":"Exelixis Media P.C.","url":"https:\/\/www.javacodegeeks.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","contentUrl":"https:\/\/www.javacodegeeks.com\/wp-content\/uploads\/2022\/06\/exelixis-logo.png","width":864,"height":246,"caption":"Exelixis Media P.C."},"image":{"@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/javacodegeeks","https:\/\/x.com\/javacodegeeks"]},{"@type":"Person","@id":"https:\/\/www.javacodegeeks.com\/#\/schema\/person\/4bcc3620404e78e5f185c955b7d072ba","name":"Jens Schauder","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/db4b12cfee33130f1fa227423e7c1365ffb4208f0eb429cc72b114050a330fe7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/db4b12cfee33130f1fa227423e7c1365ffb4208f0eb429cc72b114050a330fe7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/db4b12cfee33130f1fa227423e7c1365ffb4208f0eb429cc72b114050a330fe7?s=96&d=mm&r=g","caption":"Jens Schauder"},"sameAs":["http:\/\/blog.schauderhaft.de\/","http:\/\/www.linkedin.com\/profile\/view?id=215931217&trk=tab_pro","https:\/\/x.com\/http:\/\/twitter.com\/jensschauder"],"url":"https:\/\/www.javacodegeeks.com\/author\/Jens-Schauder"}]}},"_links":{"self":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/757","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/comments?post=757"}],"version-history":[{"count":0,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/posts\/757\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media\/115"}],"wp:attachment":[{"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/media?parent=757"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/categories?post=757"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.javacodegeeks.com\/wp-json\/wp\/v2\/tags?post=757"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}