<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[ISabiTech]]></title><description><![CDATA[IsabiTech shares practical engineering insights, AI developer tools, Java and Spring Boot projects, and lessons from building real-world software.]]></description><link>https://isabitech.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 02 Nov 2026 23:52:22 GMT</lastBuildDate><atom:link href="https://isabitech.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How I Tested an AI Code Reviewer With an Intentionally Failing JUnit Test]]></title><description><![CDATA[See how CodeGuard AI detected a failing JUnit assertion, verified the test failure, and suggested a fix.]]></description><link>https://isabitech.hashnode.dev/how-i-tested-an-ai-code-reviewer-with-an-intentionally-failing-junit-test</link><guid isPermaLink="true">https://isabitech.hashnode.dev/how-i-tested-an-ai-code-reviewer-with-an-intentionally-failing-junit-test</guid><category><![CDATA[Java]]></category><category><![CDATA[Springboot]]></category><category><![CDATA[AI]]></category><category><![CDATA[Testing]]></category><category><![CDATA[Developer Tools]]></category><dc:creator><![CDATA[ISabiTech]]></dc:creator><pubDate>Thu, 29 Oct 2026 05:00:00 GMT</pubDate><content:encoded><![CDATA[<p>An AI code reviewer shouldn't just comment on code. It should also help developers understand whether their tests actually pass.</p>
<p>I wanted to test this with a simple, reproducible scenario using <strong>CodeGuard AI</strong>, my Java 21 and Spring Boot-based GitHub pull request reviewer.</p>
<h2>The experiment</h2>
<p>I deliberately added an incorrect JUnit assertion to a GitHub pull request.</p>
<pre><code class="language-java">@Test
void shouldDetectIncorrectExpectedValue() {
    assertEquals(5, 2 + 2);
}
</code></pre>
<p>The assertion expects <code>5</code>, but the expression evaluates to <code>4</code>.</p>
<p>This is an intentionally failing test—not a hypothetical bug description.</p>
<h2>What CodeGuard AI detected</h2>
<p>CodeGuard reported:</p>
<ul>
<li><strong>Test execution:</strong> <code>FAILED</code></li>
<li><strong>Tests executed:</strong> 1</li>
<li><strong>Tests failed:</strong> 1</li>
<li><strong>Expected value:</strong> 5</li>
<li><strong>Actual value:</strong> 4</li>
</ul>
<p>It also identified the failing assertion in the changed test file and suggested changing the expected value to <code>4</code>.</p>
<p>That gave me concrete evidence that the reviewer could detect and explain this particular test failure.</p>
<img src="https://cdn.hashnode.com/uploads/covers/6ac1eb750105fa03dc98e7d4/7255e117-aa92-4948-a010-3ee1e9eac63e.png" alt="" style="display:block;margin:0 auto" />

<img src="https://cdn.hashnode.com/uploads/covers/6ac1eb750105fa03dc98e7d4/a64b0128-46fe-44cd-8bb3-6a19c5902104.png" alt="" style="display:block;margin:0 auto" />

<h2>What about the merge decision?</h2>
<p>The interesting part was that CodeGuard recommended not merging, while its configured merge policy returned <strong>Merge After Fixes / WARN</strong>.</p>
<p>That difference matters.</p>
<p>Detecting a failure is one responsibility. Applying an appropriate merge policy is another. I want to validate both rather than assume that a correct finding automatically leads to the right merge decision.</p>
<h2>What's next?</h2>
<p>I'm testing CodeGuard AI across 100 scenarios covering:</p>
<ul>
<li>Genuine bugs and false positives</li>
<li>Test execution and result verification</li>
<li>Evidence quality and confidence</li>
<li>Merge policies</li>
<li>Suggested fixes and regression validation</li>
<li>Repository context and reliability</li>
</ul>
<p>I'll share the results—including failures and limitations—as testing continues.</p>
<h2>Try CodeGuard AI</h2>
<p>CodeGuard AI is built with Java 21 and Spring Boot, with support for AI providers including OpenAI, Gemini, and Ollama.</p>
<p>The source code is available on Gumroad:</p>
<p><a href="https://javacoder716.gumroad.com/l/codeguard-ai?utm_source=hashnode&amp;utm_medium=article&amp;utm_campaign=codeguard_ai_testing&amp;utm_content=test_09">https://javacoder716.gumroad.com/l/codeguard-ai?utm_source=hashnode&amp;utm_medium=article&amp;utm_campaign=codeguard_ai_testing&amp;utm_content=test_09</a></p>
<p>I'd like to hear from other developers:</p>
<p><strong>Should an AI code reviewer automatically block a pull request when its test suite fails, or should that decision remain configurable?</strong></p>
]]></content:encoded></item><item><title><![CDATA[AI Code Review Is Getting Better. So Why Are Developers Still Ignoring Findings?]]></title><description><![CDATA[AI can find more issues in a pull request than ever before. But finding issues isn't the hardest part anymore. The harder problem is deciding which…]]></description><link>https://isabitech.hashnode.dev/ai-code-review-is-getting-better-so-why-are-developers-still-ignoring-findings</link><guid isPermaLink="true">https://isabitech.hashnode.dev/ai-code-review-is-getting-better-so-why-are-developers-still-ignoring-findings</guid><dc:creator><![CDATA[ISabiTech]]></dc:creator><pubDate>Sun, 04 Oct 2026 06:27:59 GMT</pubDate><content:encoded><![CDATA[<h2>The problem with “AI found 20 issues”</h2>
<p>AI-assisted code review has made it much easier to scan a pull request for potential problems.</p>
<p>A model can identify security concerns, bugs, performance issues, code smells, and possible edge cases in seconds.</p>
<p>But there is a problem.</p>
<p>A developer doesn't necessarily need 20 findings.</p>
<p>They need to know:</p>
<ul>
<li><p>Which finding is actually important?</p>
</li>
<li><p>Which one could affect production?</p>
</li>
<li><p>How confident should we be in the finding?</p>
</li>
<li><p>What part of the change needs human attention?</p>
</li>
<li><p>Which findings can safely be ignored?</p>
</li>
</ul>
<p>That distinction becomes increasingly important as AI-generated code becomes a larger part of software development.</p>
<p>More findings don't automatically mean better code review.</p>
<p>Better prioritization does.</p>
<h2>Why severity alone isn't enough</h2>
<p>A common approach is to assign findings a severity such as low, medium, high, or critical.</p>
<p>That's useful, but severity by itself doesn't tell the whole story.</p>
<p>Consider two findings:</p>
<p><strong>Finding A</strong></p>
<p>A possible null-pointer issue in code that is rarely executed.</p>
<p><strong>Finding B</strong></p>
<p>A small configuration change affecting a shared authentication component.</p>
<p>The first might look technically serious in isolation.</p>
<p>The second might have a much larger real-world impact.</p>
<p>This is why an AI review system needs more context than simply asking:</p>
<blockquote>
<p>“Is this code wrong?”</p>
</blockquote>
<p>It needs to help answer:</p>
<blockquote>
<p>“How much attention should a developer give this change?”</p>
</blockquote>
<p>That is a much more useful question for an engineering team.</p>
<h2>Repository and pull-request context matters</h2>
<p>A pull request should not always be treated as an isolated block of changed code.</p>
<p>A small change can have a large blast radius if it touches:</p>
<ul>
<li><p>shared services</p>
</li>
<li><p>authentication or authorization</p>
</li>
<li><p>database access</p>
</li>
<li><p>configuration</p>
</li>
<li><p>common libraries</p>
</li>
<li><p>APIs used by multiple components</p>
</li>
<li><p>infrastructure or deployment logic</p>
</li>
</ul>
<p>This is where repository context becomes important.</p>
<p>The more context a review system can understand, the better it can distinguish between a harmless local change and a change that deserves deeper human investigation.</p>
<h2>Confidence is different from severity</h2>
<p>Another useful signal is confidence.</p>
<p>A high-severity finding with low confidence should not necessarily receive the same treatment as a high-severity finding with strong evidence.</p>
<p>For example:</p>
<p><strong>High severity + high confidence</strong></p>
<p>Investigate immediately.</p>
<p><strong>High severity + low confidence</strong></p>
<p>Worth investigating, but the reviewer should know that the model has uncertainty.</p>
<p>This distinction helps prevent AI review from becoming a source of unnecessary noise.</p>
<p>The goal isn't to make the AI sound certain.</p>
<p>The goal is to make the review more useful.</p>
<h2>The human reviewer still matters</h2>
<p>AI code review should not try to eliminate the developer from the process.</p>
<p>A better model is:</p>
<p><strong>AI analysis → prioritization → human judgment → decision</strong></p>
<p>The AI can perform the repetitive analysis.</p>
<p>The developer decides what actually matters in the context of the system, business requirements, architecture, and production environment.</p>
<p>This makes the AI reviewer an engineering assistant rather than an automatic authority.</p>
<h2>What a useful AI code-review workflow should look like</h2>
<p>A practical AI code-review workflow should focus on reducing the amount of unnecessary attention required from developers.</p>
<p>A useful workflow can look something like this:</p>
<p><strong>1. Understand the pull request</strong></p>
<p>Look at the actual changes, affected files, and surrounding repository context.</p>
<p><strong>2. Analyze potential issues</strong></p>
<p>Look for security, bugs, performance problems, maintainability concerns, and other engineering risks.</p>
<p><strong>3. Structure the findings</strong></p>
<p>Instead of returning a long list of unorganized observations, group the findings into meaningful categories.</p>
<p><strong>4. Prioritize</strong></p>
<p>Use signals such as severity, confidence, and potential impact to help the developer understand what deserves attention first.</p>
<p><strong>5. Keep the developer in control</strong></p>
<p>The final decision should remain with the engineering team.</p>
<p>This approach makes AI review less about generating the maximum number of findings and more about generating findings that are actually useful.</p>
<h2>How we approached this with CodeGuard</h2>
<p>These ideas were also the motivation behind building CodeGuard AI.</p>
<p>CodeGuard is designed as a self-hosted AI code-review application that integrates with GitHub pull requests.</p>
<p>Instead of treating AI output as the final answer, the workflow is designed around structured findings that can help developers understand:</p>
<ul>
<li><p>What was detected</p>
</li>
<li><p>How severe the issue may be</p>
</li>
<li><p>How confident the analysis is</p>
</li>
<li><p>What part of the code is affected</p>
</li>
<li><p>Which findings deserve closer human attention</p>
</li>
</ul>
<p>CodeGuard also supports multiple AI providers, including OpenAI, Gemini, and Ollama.</p>
<p>Because the application is self-hosted source code, developers can inspect and customize the workflow instead of depending entirely on a hosted black-box service.</p>
<h2>The bigger shift in AI-assisted development</h2>
<p>As developers generate more code with AI, code review itself is going to change.</p>
<p>The question won't simply be:</p>
<blockquote>
<p>“Can AI review this pull request?”</p>
</blockquote>
<p>It will increasingly become:</p>
<blockquote>
<p>“Can AI help the developer spend their limited review time on the changes that matter most?”</p>
</blockquote>
<p>That distinction is important.</p>
<p>A system that produces more findings is not necessarily a better review system.</p>
<p>A system that helps a developer identify the findings worth investigating may be much more valuable.</p>
<p>AI should reduce review noise, not create another source of it.</p>
<h2>Want to build and own this workflow?</h2>
<p>CodeGuard AI is available as self-hosted source code for developers who want to build, inspect, and customize their own AI-powered GitHub code-review workflow.</p>
<p>It is built with Java 17 and Spring Boot and supports GitHub pull-request integration, structured findings, severity and confidence signals, and multiple AI providers.</p>
<p><a href="https://javacoder716.gumroad.com/l/codeguard-ai?utm_source=hashnode&amp;utm_medium=referral&amp;utm_campaign=codeguard_ai&amp;utm_content=article">Explore CodeGuard AI →</a></p>
]]></content:encoded></item></channel></rss>