<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<p><font style="font-family:Calibri,Helvetica,sans-serif,serif,"EmojiFont"" size="3" face="Calibri,Helvetica,sans-serif" color="black"><span id="x_divtagdefaultwrapper" style="font-size:12pt"></span></font></p>
<font style="font-family:Calibri,Helvetica,sans-serif,serif,"EmojiFont"" size="3" face="Calibri,Helvetica,sans-serif" color="black">
<div style="margin-top:0; margin-bottom:0"></div>
</font></div>
<p>Dear DUNE Developers,</p>
<p><br>
</p>
<p>I recently added a CI job template for the core modules aimed at maintaining and improving our code quality using code linters and analyzers such as clang-tidy, Clang/GCC Static Analyzer, and cppcheck. Currently, no specific checks are enforced, but the
 goal is to incrementally add them to the CI to prevent "easy-to-find" issues from entering our code base.</p>
<p>Here is how it works:</p>
<ol>
<li>
<p><strong>Configuration</strong>: You need to configure a <code>.codechecker/config.json</code> file in one of our core module repositories with settings from CodeChecker. You can refer to the dune-common configuration for an example
<a href="https://gitlab.dune-project.org/core/dune-common/-/merge_requests/1321/diffs" class="OWAAutoLink">
here</a>. This will automatically enable the code quality checks.</p>
</li><li>
<p><strong>Listing Available Checks</strong>: To see all the possible code checks available in our core modules CI, run the following command on your machine:</p>
<pre><div class="dark bg-gray-950 rounded-md border-[0.5px] border-token-border-medium"><div class="flex items-center relative text-token-text-secondary bg-token-main-surface-secondary px-4 py-2 text-xs font-sans justify-between rounded-t-md"><code class="!whitespace-pre hljs language-bash">docker run registry.dune-project.org/docker/ci/ubuntu:23.04 /bin/bash -c <span class="hljs-string">"ln -s /usr/bin/clang-tidy-18 /duneci/bin/clang-tidy && ln -s /usr/bin/clang-18 /duneci/bin/clang && /duneci/venv/bin/CodeChecker checkers"</span></code></div></div></pre>
</li></ol>
<ol>
<li value="2">
<p>This command lists hundreds of checks that can be added to the configuration file. Our focus should be on identifying the relevant checks that need to be addressed in our current code base and enforced in the future.</p>
</li><li>
<p><strong>Enabling and Enforcing Checks</strong>: Once a check is enabled in a merge request, the CI will report any issues and provide links to the problematic code. The merge request will not succeed until all code quality issues are resolved.</p>
</li></ol>
<p>I encourage everyone interested in improving our code base to open merge requests with their preferred linter/analyzer checks!</p>
<p>For more information, please refer to the <span id="ms-rterangepaste-start"></span><span><a href="https://codechecker.readthedocs.io/en/latest/analyzer/user_guide/" class="OWAAutoLink">CodeChecker user guide</a>.</span><span id="ms-rterangepaste-end"></span>
</p>
<p><br>
</p>
<p>Cheers,<br>
Santiago</p>
<div dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, "EmojiFont", "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<font style="font-family:Calibri,Helvetica,sans-serif,serif,"EmojiFont"" size="3" face="Calibri,Helvetica,sans-serif" color="black">
<div style="margin-top:0; margin-bottom:0"></div>
</font><br>
</div>
</div>
</body>
</html>