{"id":6849,"date":"2022-06-21T08:03:02","date_gmt":"2022-06-21T07:03:02","guid":{"rendered":"https:\/\/medtech-ingenieur.de\/?p=6849"},"modified":"2022-06-21T10:13:25","modified_gmt":"2022-06-21T09:13:25","slug":"nachvollziehbares-code-review-mit-doxygen-und-gitlab","status":"publish","type":"post","link":"https:\/\/medtech-ingenieur.de\/en\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/","title":{"rendered":"Traceable code review with Doxygen and GitLab"},"content":{"rendered":"<h2>Intro<\/h2>\n<p>We&#039;ve already covered code reviews in a few blog posts, so why another article on the topic?<br \/>\nWell, here&#039;s a process that has proven effective for us when conducting code reviews. You can find other articles on the topic of code review here. <a title=\"Code reviews in medical technology\" href=\"https:\/\/medtech-ingenieur.de\/en\/code-reviews-in-der-medizintechnik\/\">here (2015)<\/a> and <a title=\"Code review with Doxygen and SVN\" href=\"https:\/\/medtech-ingenieur.de\/en\/code-review-mit-doxygen-und-svn\/\">here (2017)<\/a>.<\/p>\n<h2>Why?<\/h2>\n<p>During the course of a project, it was discovered that a module had already been reviewed. A corresponding note in a table maintained specifically for this purpose had been accidentally changed \u2013 with the effect that the module was reviewed again (by project members who joined later and who, of course, had no way of knowing this). This inevitably happens when the status of an item is tracked separately from the item itself.<br \/>\nOn top of that, manually listing modules with findings or modules yet to be reviewed is error-prone and time-consuming (and a boring task to boot). There has to be a better way to do this without resorting to potentially expensive tools!<\/p>\n<h2>Where?<\/h2>\n<p>The goals of the new process were quickly defined:<\/p>\n<ul>\n<li>\u201cSingle-source\u201d \u2013 ie no separate documents detached from the code<\/li>\n<li>Easy tracking of the review status of source modules<\/li>\n<li>Traceability of reviews<\/li>\n<li>As few additional tools as possible<\/li>\n<\/ul>\n<h2>With what<\/h2>\n<p>At MEDtech, we conduct code reviews using Doxygen comments directly in the source code. GitLab supports branching\/merging during reviews and traceability, as well as the development itself. This means that Git workflows and Doxygen are already established in the projects.<br \/>\nLuckily, Doxygen generates custom lists, e.g., in HTML format, using the &quot;@xrefitem&quot; tag. This allows us to generate lists of modules with their respective review statuses (see below) from the source code. These can be copied into the milestone review document, for example (although this step could also be automated \ud83d\ude09).<\/p>\n<h2>Preparation<\/h2>\n<p>To avoid typos and typing in @xrefitem comments, the following aliases are defined in the Doxygen configuration file:<br \/>\n<code><br \/>\nALIASES += &quot;review_done=\\xrefitem reviews_done \\&quot;Code review done\\&quot; \\&quot;Code Review: Modules done\\&quot;&quot;<br \/>\nALIASES += &quot;review_missing=\\xrefitem reviews_missing \\&quot;Code review missing\\&quot; \\&quot;Code Review: Modules with without reviews\\&quot;&quot;<br \/>\nALIASES += &quot;review_finding=\\xrefitem review_findings \\&quot;Code review finding\\&quot; \\&quot;Code Review: Modules with findings\\&quot;&quot;<br \/>\n<\/code><br \/>\nThe tags @review_missing, @review_finding, and @review_done are used like other Doxygen tags, but should be placed in the file header comment. The text after the tag will then appear in the generated document (e.g., HTML) below the file name:<\/p>\n<p><img decoding=\"async\" class=\"size-full wp-image-6856\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild1.png\" alt=\"\" \/><\/p>\n<p>With this configuration, Doxygen creates entries in the &quot;Code review: Modules done,&quot; &quot;Code review: Modules missing,&quot; and &quot;Code review: Modules with findings&quot; lists. Ideally, this should be possible at the push of a button (think of the project management) or at least be done in the CI pipeline.<br \/>\nAs a special treat, the management receives a KPI in the simplest way and the development team a merit badge \ud83d\ude09<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"401\" height=\"254\" class=\"size-full wp-image-6854\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild2.png\" alt=\"\" srcset=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild2.png 401w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild2-300x190.png 300w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild2-100x63.png 100w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild2-150x95.png 150w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild2-200x127.png 200w\" sizes=\"auto, (max-width: 401px) 100vw, 401px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"486\" height=\"331\" class=\"size-full wp-image-6855\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild3.png\" alt=\"\" srcset=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild3.png 486w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild3-300x204.png 300w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild3-100x68.png 100w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild3-150x102.png 150w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild3-200x136.png 200w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild3-450x306.png 450w\" sizes=\"auto, (max-width: 486px) 100vw, 486px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"598\" height=\"290\" class=\"size-full wp-image-6856\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild4.png\" alt=\"\" srcset=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild4.png 598w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild4-300x145.png 300w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild4-100x48.png 100w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild4-150x73.png 150w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild4-200x97.png 200w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild4-450x218.png 450w\" sizes=\"auto, (max-width: 598px) 100vw, 598px\" \/><\/p>\n<p>So the goal has been defined \u2013 now for the path to get there.<\/p>\n<h2>The process<\/h2>\n<p>In the following, we&#039;ll run through a code review for a fictitious software module (as shown in the graphic below). The review item (=code) will go through various states during the process, which change based on the actions of the people involved, the &quot;developer&quot; and &quot;reviewer.&quot; The states are:<\/p>\n<ul>\n<li>review missing<\/li>\n<li>review findings<\/li>\n<li>review done<\/li>\n<\/ul>\n<h3>start<\/h3>\n<p><b>One thing in advance:<\/b> We have created a graphic that visualizes the following steps. You can find the graphic <a href=\"#crProcess\">at the end of the blog post<\/a>.<br \/>\nThe code review process begins with the creation or revision of our software module in the status \u201creview missing\u201d. The developer creates a <b>Review ticket<\/b> (hereinafter referred to as <b>Issue<\/b> (referred to as) in GitLab and assigns it to the reviewer. This also creates a separate <b>Git branch including merge request<\/b> created (alternatively, the review can also be done directly on the feature development branch). The merge request should use the WiP (&quot;work in progress&quot;) status to prevent anyone from accidentally closing the merge request. In GitLab, you can do all this with one click (&quot;Create branch and merge request&quot;) within the respective issue.<\/p>\n<h3>Review<\/h3>\n<p>The reviewer now begins their work by inserting the following template into the code header (a reduced template example is provided here for clarity). It contains the status alias along with the last committer&#039;s initials, the commit date, and finally the commit hash.<br \/>\n<b>Note:<\/b> Since Doxygen removes line breaks within a comment block, manual line breaks &quot;@n&quot; are required for better readability in the output format.<br \/>\n<code><br \/>\n\/**<br \/>\n* @file exampleUnit.c<br \/>\n* @brief example for code review demonstration<br \/>\n*<br \/>\n* @review_finding &lt;REVIEWER&gt;, &lt;DATE&gt;, &lt;HASH&gt;<br \/>\n* @n 1. Completeness of implementation<br \/>\n* @n 2. General code quality<br \/>\n* @n - 2.1 Null pointer check:<br \/>\n* @n - 2.2 No infinite loops:<br \/>\n* @n - 2.3 No open Todos in code:<br \/>\n<\/code><br \/>\nThe relevant findings are documented in the comment structure, e.g.:<br \/>\n<code><br \/>\n* @review_findings RVW, May 3, 2022, &lt;HASH&gt;<br \/>\n* @n 1. Completeness of implementation: ok<br \/>\n* @n 2. General code quality<br \/>\n* @n - 2.1 Null pointer check:<b><br \/>\n* @n RVW finding: Missing Check in foo()<br \/>\n* @n - 2.2 No infinite loops: ok<br \/>\n* @n - 2.3 No open Todos in code: ok<\/b><br \/>\n<\/code><br \/>\n<b>Note:<\/b> Changes to the review tag are highlighted in bold.<br \/>\nIn the unlikely event that no findings are found during the review, the reviewer changes the status to &quot;review done&quot; (but we&#039;re not finished yet). Usually, however, there are findings after the first review\u2014as in this case. This causes the reviewer to change the status to &quot;review finding.&quot; They then commit the changes and assign the issue to the developer.<\/p>\n<h3>editing<\/h3>\n<p>The developer processes the findings. He can create a finding...<\/p>\n<ul>\n<li>\u2026 reject (<b>reject<\/b>): In this case, the developer and reviewer disagree. It should be discussed whether a fix is needed or not.<\/li>\n<li>\u2026 repair (<b>fix<\/b>): the developer agrees with the reviewer that this should be reworked and fixes the finding.<\/li>\n<li>\u2026 accept (<b>accept<\/b>): the developer agrees with the reviewer that rework is needed, but cannot correct the finding (e.g. due to time constraints).<\/li>\n<\/ul>\n<p>The actions are recorded in the review tag:<br \/>\n<code><br \/>\n* @review_findings RVW, May 3, 2022, &lt;HASH&gt;<br \/>\n* @n 1. Completeness of implementation: ok<br \/>\n* @n 2. General code quality<br \/>\n* @review_findings RVW, May 3, 2022, &lt;HASH&gt;<br \/>\n* @n - 2.1 Null pointer check:<b><br \/>\n* @n RVW finding: Missing Check in foo()<br \/>\n* @n DVP fix: used semaphore for function foo().<\/b><br \/>\n* @n - 2.2 No infinite loops: ok<br \/>\n* @n - 2.3 No open Todos in code: ok<br \/>\n<\/code><br \/>\nThe whole thing is then checked back in. The developer now reassigns the issue to the reviewer.<br \/>\n<b>A notice:<\/b> The review status will not be changed when the developer makes the revision!<\/p>\n<h3>Re-Review<\/h3>\n<p>The fixes and rejects are reviewed in this review step and commented on accordingly. If the reviewer is satisfied with the changes and\/or the developer&#039;s reasons for the rejections, they confirm this with a simple &quot;ok&quot; in the review tag. This comment change is checked back in \u2013 because to complete the review in the next step, we need the corresponding revision number (=hash) for traceability. Finally, the release document should reference the version containing the complete review comment.<br \/>\n<code><br \/>\n* @review_findings RVW, May 3, 2022, &lt;HASH&gt;<br \/>\n* @n 1. Completeness of implementation: ok<br \/>\n* @n 2. General code quality<br \/>\n* @n - 2.1 Null pointer check:<br \/>\n* @n RVW finding: Missing Check in foo()<br \/>\n* @n DVP 2022-06-03: fixed: used semaphore for function foo().<b><br \/>\n* @n RVW 2022-06-04: confirmed<\/b><br \/>\n* @n - 2.2 No infinite loops: ok<br \/>\n* @n - 2.3 No open Todos in code: ok<br \/>\n<\/code><br \/>\nIf there are still doubts about the implementation or the developer&#039;s decision, another round of revisions will be carried out.<\/p>\n<h3>Diploma<\/h3>\n<p>Let&#039;s assume that the reviewer and developer agree and the review can be completed. In our example, we finally change the review status to &quot;@review_done,&quot; enter the Git hash of the previous commit, and clean up the now-superfluous finding comments:<br \/>\n<code><br \/>\n\/**<br \/>\n* @file exampleUnit.c<br \/>\n* @brief example for code review demonstration<br \/>\n*<br \/>\n* @review_done RVW, May 3, 2022, 002e9d43bde307687aee6bd8bc3075838645290e<br \/>\n*\/<br \/>\n<\/code><br \/>\nIf findings persist, the status \u201c@review_finding\u201d will not change even after the review is completed.<br \/>\nAfter the commit, the reviewer removes the WiP status of the MR (=changes the MR title) and assigns the merge request to the developer who will perform the merge. Clicking the Merge button within the merge request in GitLab automatically closes the associated issue and the merge request itself after the associated branch has been successfully merged into the master branch. This concludes the code review of our module.<\/p>\n<figure id=\"attachment_6786\" aria-describedby=\"caption-attachment-6786\" style=\"width: 206px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess.png\"><img loading=\"lazy\" decoding=\"async\" id=\"crProcess\" class=\"size-medium wp-image-6786\" src=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-206x300.png\" alt=\"\" width=\"206\" height=\"300\" srcset=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-206x300.png 206w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-768x1116.png 768w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-704x1024.png 704w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-100x145.png 100w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-150x218.png 150w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-200x291.png 200w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-300x436.png 300w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-450x654.png 450w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess-600x872.png 600w, https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/05\/CodeReviewProcess.png 820w\" sizes=\"auto, (max-width: 206px) 100vw, 206px\" \/><\/a><figcaption id=\"caption-attachment-6786\" class=\"wp-caption-text\">Code review process (click to enlarge)<\/figcaption><\/figure>\n<h2>Summary<\/h2>\n<p>In this blog post, we&#039;ve shown that comprehensible code reviews are feasible and practical with the initial goals and the tools GitLab and doxygen. Of course, we&#039;re interested in your thoughts or\u2014even better\u2014whether you&#039;ve established &quot;simpler&quot; processes yourself, because, as we all know, more complexity is always possible, and brevity is the soul of wit.<\/p>\n<p>If you have any comments, suggestions, or questions, please do not hesitate to contact us. You can use the comment function or contact us directly via email (<a href=\"mailto:info@medtech-ingenieur.de\">info@medtech-ingenieur.de<\/a>) or telephone (09131\/691240).<\/p>","protected":false},"excerpt":{"rendered":"<p>Intro In dem einen oder anderen Blog-Artikel haben wir uns bereits mit Code-Reviews auseinandergesetzt, Wozu also noch ein Artikel zu dem Thema? Nun: Hier geht es um einen Prozess, der sich bei uns bei der Durchf\u00fchrung von Code-Reviews bew\u00e4hrt hat. Andere Artikel zum Thema Code Review finden Sie hier (2015) und hier (2017). Warum? Im [&hellip;]<\/p>\n","protected":false},"author":24,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,3,604,6],"tags":[],"class_list":["post-6849","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-dokumentation","category-qualitaet","category-software","post-wrapper","thrv_wrapper"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Nachvollziehbares Code Review mit Doxygen und GitLab - MEDtech Ingenieur GmbH<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/medtech-ingenieur.de\/en\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nachvollziehbares Code Review mit Doxygen und GitLab - MEDtech Ingenieur GmbH\" \/>\n<meta property=\"og:description\" content=\"Intro In dem einen oder anderen Blog-Artikel haben wir uns bereits mit Code-Reviews auseinandergesetzt, Wozu also noch ein Artikel zu dem Thema? Nun: Hier geht es um einen Prozess, der sich bei uns bei der Durchf\u00fchrung von Code-Reviews bew\u00e4hrt hat. Andere Artikel zum Thema Code Review finden Sie hier (2015) und hier (2017). Warum? Im [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/medtech-ingenieur.de\/en\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/\" \/>\n<meta property=\"og:site_name\" content=\"MEDtech Ingenieur GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/medtechIngenieur\" \/>\n<meta property=\"article:published_time\" content=\"2022-06-21T07:03:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-21T09:13:25+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild1.png\" \/>\n<meta name=\"author\" content=\"Luca Lattanzio\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@MedtechIng\" \/>\n<meta name=\"twitter:site\" content=\"@MedtechIng\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Luca Lattanzio\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/\"},\"author\":{\"name\":\"Luca Lattanzio\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/person\\\/4afffdafc5ce4e056c9991577853e999\"},\"headline\":\"Nachvollziehbares Code Review mit Doxygen und GitLab\",\"datePublished\":\"2022-06-21T07:03:02+00:00\",\"dateModified\":\"2022-06-21T09:13:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/\"},\"wordCount\":1196,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Bild1.png\",\"articleSection\":[\"Allgemein\",\"Dokumentation\",\"Qualit\u00e4t\",\"Software\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/\",\"name\":\"Nachvollziehbares Code Review mit Doxygen und GitLab - MEDtech Ingenieur GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Bild1.png\",\"datePublished\":\"2022-06-21T07:03:02+00:00\",\"dateModified\":\"2022-06-21T09:13:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#primaryimage\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Bild1.png\",\"contentUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2022\\\/06\\\/Bild1.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Nachvollziehbares Code Review mit Doxygen und GitLab\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#website\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\",\"name\":\"MEDtech Ingenieur GmbH\",\"description\":\"Ingenieursdienstleister f\u00fcr Medizintechnik\",\"publisher\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\"},\"alternateName\":\"MEDtech\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/medtech-ingenieur.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#organization\",\"name\":\"MEDtech Ingenieur\",\"alternateName\":\"MEDtech\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/logo-700x700-1.png\",\"contentUrl\":\"https:\\\/\\\/medtech-ingenieur.de\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/logo-700x700-1.png\",\"width\":700,\"height\":700,\"caption\":\"MEDtech Ingenieur\"},\"image\":{\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/medtechIngenieur\",\"https:\\\/\\\/x.com\\\/MedtechIng\",\"https:\\\/\\\/www.instagram.com\\\/medtech.ingenieure\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/37871229\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/medtech-ingenieur.de\\\/#\\\/schema\\\/person\\\/4afffdafc5ce4e056c9991577853e999\",\"name\":\"Luca Lattanzio\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d2cfcb769405caee34cb5557583054fbdf9999caecc3f85d7ac388e72b273685?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d2cfcb769405caee34cb5557583054fbdf9999caecc3f85d7ac388e72b273685?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/d2cfcb769405caee34cb5557583054fbdf9999caecc3f85d7ac388e72b273685?s=96&d=mm&r=g\",\"caption\":\"Luca Lattanzio\"},\"description\":\"Luca ist studierter Elektrotechnik-Ingenieur und sammelte w\u00e4hrend seines Studiums sowie in der Zeit danach wertvolle berufliche Erfahrungen bei MEDtech. Obwohl er inzwischen f\u00fcr ein anderes Unternehmen t\u00e4tig ist, bleibt er bei MEDtech als Autor erhalten und verfasst gelegentlich Beitr\u00e4ge, um seine Expertise und Leidenschaft f\u00fcr seinen Beruf zu teilen. Dar\u00fcber hinaus z\u00e4hlt er weiterhin zu den engagierten Lesern des Blogs.\",\"url\":\"https:\\\/\\\/medtech-ingenieur.de\\\/en\\\/author\\\/llattanzio\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Traceable code review with Doxygen and GitLab - MEDtech Ingenieur GmbH","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:\/\/medtech-ingenieur.de\/en\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/","og_locale":"en_US","og_type":"article","og_title":"Nachvollziehbares Code Review mit Doxygen und GitLab - MEDtech Ingenieur GmbH","og_description":"Intro In dem einen oder anderen Blog-Artikel haben wir uns bereits mit Code-Reviews auseinandergesetzt, Wozu also noch ein Artikel zu dem Thema? Nun: Hier geht es um einen Prozess, der sich bei uns bei der Durchf\u00fchrung von Code-Reviews bew\u00e4hrt hat. Andere Artikel zum Thema Code Review finden Sie hier (2015) und hier (2017). Warum? Im [&hellip;]","og_url":"https:\/\/medtech-ingenieur.de\/en\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/","og_site_name":"MEDtech Ingenieur GmbH","article_publisher":"https:\/\/www.facebook.com\/medtechIngenieur","article_published_time":"2022-06-21T07:03:02+00:00","article_modified_time":"2022-06-21T09:13:25+00:00","og_image":[{"url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild1.png","type":"","width":"","height":""}],"author":"Luca Lattanzio","twitter_card":"summary_large_image","twitter_creator":"@MedtechIng","twitter_site":"@MedtechIng","twitter_misc":{"Written by":"Luca Lattanzio","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#article","isPartOf":{"@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/"},"author":{"name":"Luca Lattanzio","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/person\/4afffdafc5ce4e056c9991577853e999"},"headline":"Nachvollziehbares Code Review mit Doxygen und GitLab","datePublished":"2022-06-21T07:03:02+00:00","dateModified":"2022-06-21T09:13:25+00:00","mainEntityOfPage":{"@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/"},"wordCount":1196,"commentCount":0,"publisher":{"@id":"https:\/\/medtech-ingenieur.de\/#organization"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#primaryimage"},"thumbnailUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild1.png","articleSection":["Allgemein","Dokumentation","Qualit\u00e4t","Software"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/","url":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/","name":"Traceable code review with Doxygen and GitLab - MEDtech Ingenieur GmbH","isPartOf":{"@id":"https:\/\/medtech-ingenieur.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#primaryimage"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#primaryimage"},"thumbnailUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild1.png","datePublished":"2022-06-21T07:03:02+00:00","dateModified":"2022-06-21T09:13:25+00:00","breadcrumb":{"@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#primaryimage","url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild1.png","contentUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2022\/06\/Bild1.png"},{"@type":"BreadcrumbList","@id":"https:\/\/medtech-ingenieur.de\/nachvollziehbares-code-review-mit-doxygen-und-gitlab\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/medtech-ingenieur.de\/"},{"@type":"ListItem","position":2,"name":"Nachvollziehbares Code Review mit Doxygen und GitLab"}]},{"@type":"WebSite","@id":"https:\/\/medtech-ingenieur.de\/#website","url":"https:\/\/medtech-ingenieur.de\/","name":"MEDtech Ingenieur GmbH","description":"Engineering service provider for medical technology","publisher":{"@id":"https:\/\/medtech-ingenieur.de\/#organization"},"alternateName":"MEDtech","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/medtech-ingenieur.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/medtech-ingenieur.de\/#organization","name":"MEDtech Engineer","alternateName":"MEDtech","url":"https:\/\/medtech-ingenieur.de\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/logo\/image\/","url":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/01\/logo-700x700-1.png","contentUrl":"https:\/\/medtech-ingenieur.de\/wp-content\/uploads\/2024\/01\/logo-700x700-1.png","width":700,"height":700,"caption":"MEDtech Ingenieur"},"image":{"@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/medtechIngenieur","https:\/\/x.com\/MedtechIng","https:\/\/www.instagram.com\/medtech.ingenieure\/","https:\/\/www.linkedin.com\/company\/37871229\/"]},{"@type":"Person","@id":"https:\/\/medtech-ingenieur.de\/#\/schema\/person\/4afffdafc5ce4e056c9991577853e999","name":"Luca Lattanzio","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/d2cfcb769405caee34cb5557583054fbdf9999caecc3f85d7ac388e72b273685?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/d2cfcb769405caee34cb5557583054fbdf9999caecc3f85d7ac388e72b273685?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d2cfcb769405caee34cb5557583054fbdf9999caecc3f85d7ac388e72b273685?s=96&d=mm&r=g","caption":"Luca Lattanzio"},"description":"Luca studied electrical engineering and gained valuable professional experience at MEDtech during and after his studies. Although he now works for another company, he remains a contributing writer at MEDtech, occasionally contributing articles to share his expertise and passion for his profession. He also remains a dedicated reader of the blog.","url":"https:\/\/medtech-ingenieur.de\/en\/author\/llattanzio\/"}]}},"_links":{"self":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/6849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/comments?post=6849"}],"version-history":[{"count":52,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/6849\/revisions"}],"predecessor-version":[{"id":6910,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/posts\/6849\/revisions\/6910"}],"wp:attachment":[{"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/media?parent=6849"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/categories?post=6849"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/medtech-ingenieur.de\/en\/wp-json\/wp\/v2\/tags?post=6849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}