<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adam Porkolab</title>
    <description>The latest articles on DEV Community by Adam Porkolab (@aporkolab).</description>
    <link>https://dev.to/aporkolab</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3623565%2Ff5cceae7-5d2f-4bad-976c-00c5f4ba3ae3.jpeg</url>
      <title>DEV Community: Adam Porkolab</title>
      <link>https://dev.to/aporkolab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aporkolab"/>
    <language>en</language>
    <item>
      <title>Hambugsy: The CLI That Tells You WHO Is Wrong—Your Test or Your Code</title>
      <dc:creator>Adam Porkolab</dc:creator>
      <pubDate>Sun, 15 Feb 2026 17:00:00 +0000</pubDate>
      <link>https://dev.to/aporkolab/hambugsy-the-cli-that-tells-you-who-is-wrong-your-test-or-your-code-2ncd</link>
      <guid>https://dev.to/aporkolab/hambugsy-the-cli-that-tells-you-who-is-wrong-your-test-or-your-code-2ncd</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  🍔 Hambugsy: Finding the Bug in Your Stack
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Hambugsy&lt;/strong&gt; is a CLI tool that answers the question every developer asks when a test fails:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Is my test wrong, or is my code wrong?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Instead of spending 30+ minutes investigating, Hambugsy gives you an instant verdict with confidence scores and recommended fixes.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Problem It Solves
&lt;/h3&gt;

&lt;p&gt;Every developer has experienced this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;❌ FAILED: testCalculateDiscount
   Expected: 90
   Actual: 85
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now begins the investigation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Was the test written correctly?&lt;/li&gt;
&lt;li&gt;Did someone change the business logic?&lt;/li&gt;
&lt;li&gt;Is this a regression?&lt;/li&gt;
&lt;li&gt;Which file do I need to fix?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;This investigation typically takes 30-60 minutes per failing test.&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  The Solution
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;hambugsy analyze ./src/OrderService.java

🍔 HAMBUGSY - Finding the bug &lt;span class="k"&gt;in &lt;/span&gt;your stack...

┌─────────────────────────────────────────────────────────────────┐
│  📍 calculateTotal&lt;span class="o"&gt;()&lt;/span&gt; - line 47                                  │
│  ├── ❌ Test FAILS: testCalculateTotal_WithDiscount             │
│  ├── 🔬 Analysis:                                               │
│  │   • Test expects: 10% discount &lt;span class="o"&gt;(&lt;/span&gt;written: 2025-03-15&lt;span class="o"&gt;)&lt;/span&gt;         │
│  │   • Code applies: 15% discount &lt;span class="o"&gt;(&lt;/span&gt;changed: 2026-01-22&lt;span class="o"&gt;)&lt;/span&gt;         │
│  │   • Git blame: &lt;span class="s2"&gt;"Updated discount per new pricing policy"&lt;/span&gt;     │
│  │                                                              │
│  └── 🎯 VERDICT: Code CHANGED → Test OUTDATED                   │
│      └── 💡 Fix: Update &lt;span class="nb"&gt;test &lt;/span&gt;assertion line 23: 90 → 85         │
└─────────────────────────────────────────────────────────────────┘

📊 Summary: 1 outdated &lt;span class="nb"&gt;test&lt;/span&gt; | Time saved: ~45 minutes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Watch the Full Demo
&lt;/h3&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag_asciinema"&gt;
  
&lt;/div&gt;





&lt;p&gt;The demo showcases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;analyze&lt;/strong&gt; - Diagnose test failures and determine if the test or code is wrong&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;--run-tests&lt;/strong&gt; - Execute real tests for accurate failure detection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;suggest&lt;/strong&gt; - Find missing tests and generate suggestions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;fix&lt;/strong&gt; - Auto-fix detected issues (with --dry-run preview)&lt;/li&gt;
&lt;li&gt;Multiple output formats: console, JSON, markdown, GitHub Actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Try It Yourself
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Install&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; hambugsy

&lt;span class="c"&gt;# Analyze your project&lt;/span&gt;
hambugsy analyze ./src
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How GitHub Copilot CLI Powers Hambugsy
&lt;/h2&gt;

&lt;p&gt;Hambugsy is fundamentally built around GitHub Copilot CLI's capabilities. Here's how each feature uses Copilot:&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Semantic Code Analysis
&lt;/h3&gt;

&lt;p&gt;When Hambugsy needs to understand what a test &lt;em&gt;expects&lt;/em&gt; vs what the code &lt;em&gt;does&lt;/em&gt;, it uses Copilot:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Using Copilot to analyze test intent&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;testAnalysis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
  gh copilot explain "What behavior does this test verify: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;testCode&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Using Copilot to analyze code behavior&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;codeAnalysis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
  gh copilot explain "What does this function actually do: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;sourceCode&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2. Intelligent Fix Suggestions
&lt;/h3&gt;

&lt;p&gt;Copilot generates the specific fix recommendations:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;fixSuggestion&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
  gh copilot suggest -t code "
    The test expects: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;testExpectation&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
    The code does: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;actualBehavior&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
    Generate a fix for the &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;isTestWrong&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;code&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
  "
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  3. Commit Message Analysis
&lt;/h3&gt;

&lt;p&gt;Copilot helps interpret whether code changes were intentional:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;intentAnalysis&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
  gh copilot explain "
    Was this change intentional or accidental based on the commit message: 
    '&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;commitMessage&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;'
  "
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  4. Natural Language Explanations
&lt;/h3&gt;

&lt;p&gt;Every verdict includes a human-readable explanation generated by Copilot:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;explanation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;exec&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`
  gh copilot explain "
    Explain why the test '&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;testName&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;' fails:
    - Test expects: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
    - Code returns: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;actual&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
    - Test was written: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;testDate&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
    - Code was changed: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;codeDate&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
    Explain in plain English for a developer.
  "
`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Verdict System
&lt;/h2&gt;

&lt;p&gt;Hambugsy classifies every failing test into four categories:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;th&gt;Icon&lt;/th&gt;
&lt;th&gt;When Applied&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Code Bug&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;🐛&lt;/td&gt;
&lt;td&gt;Test is correct, code has defect&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Outdated Test&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;📜&lt;/td&gt;
&lt;td&gt;Code changed intentionally, test needs update&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Flaky Test&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;🎲&lt;/td&gt;
&lt;td&gt;Test passes/fails inconsistently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Environment Issue&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;🌐&lt;/td&gt;
&lt;td&gt;External dependency problem&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  Decision Tree
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    Test Failure
                         │
            ┌────────────┴────────────┐
            │                         │
     Code changed?              Code unchanged
            │                         │
     ┌──────┴──────┐           ┌──────┴──────┐
     │             │           │             │
Intentional?   Regression   Test valid?  Test invalid
     │             │           │             │
     ▼             ▼           ▼             ▼
  OUTDATED      CODE        CODE          TEST
    TEST         BUG         BUG           BUG
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Multi-Language Support
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Java/JUnit&lt;/span&gt;
hambugsy analyze ./src/main/java/

&lt;span class="c"&gt;# TypeScript/Jest&lt;/span&gt;
hambugsy analyze ./src/ &lt;span class="nt"&gt;--framework&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;jest

&lt;span class="c"&gt;# Python/pytest&lt;/span&gt;
hambugsy analyze ./tests/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Frameworks&lt;/th&gt;
&lt;th&gt;Status&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Java&lt;/td&gt;
&lt;td&gt;JUnit 4/5, TestNG&lt;/td&gt;
&lt;td&gt;✅ Full&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TypeScript&lt;/td&gt;
&lt;td&gt;Jest, Mocha, Vitest&lt;/td&gt;
&lt;td&gt;✅ Full&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python&lt;/td&gt;
&lt;td&gt;pytest, unittest&lt;/td&gt;
&lt;td&gt;✅ Full&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Go&lt;/td&gt;
&lt;td&gt;go test, testify&lt;/td&gt;
&lt;td&gt;✅ Full&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust&lt;/td&gt;
&lt;td&gt;#[test], tokio::test&lt;/td&gt;
&lt;td&gt;✅ Full&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;C#&lt;/td&gt;
&lt;td&gt;NUnit, xUnit, MSTest&lt;/td&gt;
&lt;td&gt;✅ Full&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h3&gt;
  
  
  🆕 Missing Test Suggestions
&lt;/h3&gt;

&lt;p&gt;Beyond analyzing failures, Hambugsy proactively finds &lt;strong&gt;untested code paths&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;hambugsy suggest ./src/PaymentService.java

🍔 Finding gaps &lt;span class="k"&gt;in &lt;/span&gt;your &lt;span class="nb"&gt;test &lt;/span&gt;coverage...

📍 processPayment&lt;span class="o"&gt;()&lt;/span&gt; @ line 5
├── ✅ TESTED: Happy path
├── ❌ MISSING: null request handling
├── ❌ MISSING: negative amount validation
└── ❌ MISSING: large amount threshold

💡 SUGGESTED TESTS: &lt;span class="o"&gt;[&lt;/span&gt;generates actual &lt;span class="nb"&gt;test &lt;/span&gt;code]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This is what sets Hambugsy apart - it doesn't just analyze failures, it &lt;strong&gt;prevents future bugs&lt;/strong&gt; by identifying missing test coverage.&lt;/p&gt;
&lt;h3&gt;
  
  
  CI/CD Integration
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# GitHub Actions&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Analyze Tests&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;hambugsy analyze ./src --format=github&lt;/span&gt;

&lt;span class="c1"&gt;# The tool outputs GitHub Actions annotations&lt;/span&gt;
&lt;span class="c1"&gt;# ::error file=src/Service.java,line=47::CODE BUG: Missing null check&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Rich Configuration
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# .hambugsy.yml&lt;/span&gt;
&lt;span class="na"&gt;patterns&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;source&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;src/**/*.java"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;test&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;test/**/*.java"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="na"&gt;analysis&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;git_history_days&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;90&lt;/span&gt;
  &lt;span class="na"&gt;confidence_threshold&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0.7&lt;/span&gt;

&lt;span class="na"&gt;ci&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;fail_on_bugs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;fail_on_outdated_tests&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;┌─────────────────────────────────────────────────┐
│                  Hambugsy CLI                   │
├─────────────────────────────────────────────────┤
│  ┌─────────┐  ┌─────────┐  ┌─────────┐          │
│  │ Parser  │  │Analyzer │  │Reporter │          │
│  └────┬────┘  └────┬────┘  └────┬────┘          │
│       └────────────┼────────────┘               │
│                    │                            │
│           ┌────────▼────────┐                   │
│           │  Copilot Bridge │                   │
│           └────────┬────────┘                   │
├────────────────────┼────────────────────────────┤
│                    │                            │
│  ┌─────────┐  ┌────▼────┐  ┌─────────┐          │
│  │   Git   │  │ Copilot │  │  File   │          │
│  │ History │  │   CLI   │  │ System  │          │
│  └─────────┘  └─────────┘  └─────────┘          │
└─────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why "Hambugsy"?
&lt;/h2&gt;

&lt;p&gt;🍔 &lt;strong&gt;Ham&lt;/strong&gt; + 🐛 &lt;strong&gt;Bug&lt;/strong&gt; + 🎩 &lt;strong&gt;Bugsy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Like a &lt;strong&gt;hamburger&lt;/strong&gt; with layers - bugs hide between the test layer and code layer&lt;/li&gt;
&lt;li&gt;We hunt &lt;strong&gt;bugs&lt;/strong&gt; - finding who's guilty&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bugsy&lt;/strong&gt; Siegel - the gangster who always found the guilty party&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;"Finding the bug in your stack"&lt;/em&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Repository
&lt;/h2&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/aporkolab" rel="noopener noreferrer"&gt;
        aporkolab
      &lt;/a&gt; / &lt;a href="https://github.com/aporkolab/hambugsy" rel="noopener noreferrer"&gt;
        hambugsy
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/aporkolab/hambugsy/assets/logo-512.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Faporkolab%2Fhambugsy%2Fassets%2Flogo-512.png" alt="Hambugsy Logo" width="200"&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Hambugsy&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;
  &lt;strong&gt;The CLI tool that tells you WHO is wrong: your test or your code.&lt;/strong&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/hambugsy" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3c7577b71ce91b66a025dc2dbcfceb293f12ae283af2b415ecb2f19f668fd01a/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f68616d6275677379" alt="npm version"&gt;&lt;/a&gt;
  &lt;a href="https://www.npmjs.com/package/hambugsy" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f7e0bfea2485552abbdd7896c7c94667047bfe81e47d3bae29ab2f55a21c2821/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f68616d6275677379" alt="npm downloads"&gt;&lt;/a&gt;
  &lt;a href="https://opensource.org/licenses/MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fdf2982b9f5d7489dcf44570e714e3a15fce6253e0cc6b5aa61a075aac2ff71b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e737667" alt="License: MIT"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/github/gh-copilot" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/56495cbe90d4484270f21d411db277478cc42d565947e9245d1cdd9ce74b4dac/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4275696c74253230776974682d476974487562253230436f70696c6f74253230434c492d626c7565" alt="Built with GitHub Copilot CLI"&gt;&lt;/a&gt;
  &lt;a href="https://nodejs.org" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/397af93f605e25369c8d4de02b3c8163910b56cf749e10b862478146ce846bd2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e6f64652e6a732d31382532422d677265656e" alt="Node.js 18+"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/APorkolab/hambugsy" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/091f40547c80853ce7fa1b65d207ff187847caf708e6ae57bb6eb78145e961ae/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f74657374732d31343425323070617373696e672d627269676874677265656e" alt="Tests"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://www.npmjs.com/package/hambugsy" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;📦 View on npm&lt;/strong&gt;&lt;/a&gt; •
  &lt;a href="https://hambugsy.dev" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;🌐 Website&lt;/strong&gt;&lt;/a&gt; •
  &lt;a href="https://github.com/aporkolab/hambugsy#installation" rel="noopener noreferrer"&gt;&lt;strong&gt;⚡ Quick Start&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quick Install&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install -g hambugsy
hambugsy analyze ./src&lt;/pre&gt;

&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Demo&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://asciinema.org/a/hZgtfHSLYVLY2kvL" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/613658f1e8bdcca0126d62ae7e1c7f5e15e50505b37a4cc0ae8fb59d4c883da8/68747470733a2f2f61736369696e656d612e6f72672f612f685a67746648534c59564c59326b764c2e737667" alt="asciicast"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Problem&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Every developer knows this pain:&lt;/p&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;❌ FAILED: testCalculateDiscount
   Expected: 90
   Actual: 85
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now what? Is the test wrong? Is the code wrong? Did someone change the business logic? Is the test outdated?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You spend 30 minutes investigating only to find the test was written for the OLD discount logic.&lt;/strong&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;The Solution&lt;/h2&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;$ hambugsy analyze ./src/OrderService.java
🍔 HAMBUGSY - Test Failure Diagnostics 🍔
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

┌────────────────────────────────────────────────────────────────────┐
│  📍 Method: &lt;span class="pl-en"&gt;calculateDiscount&lt;/span&gt;() @ line 32                          │
├────────────────────────────────────────────────────────────────────┤
│  ❌ FAILING TEST: testPremiumDiscount                              │
│                                                                    │
│  🔬 ANALYSIS:                                                      │
│  ├── Test expects: 10% discount (written: 2024-03-15)              │
│  └── Code applies: 15% discount (changed: 2024-11-22)              │
│                                                                    │
│  🎯 VERDICT: 📜 OUTDATED TEST&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/aporkolab/hambugsy" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  Quick Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;📦 &lt;a href="https://www.npmjs.com/package/hambugsy" rel="noopener noreferrer"&gt;npm Package&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🌐 &lt;a href="https://hambugsy.dev" rel="noopener noreferrer"&gt;Website&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📖 &lt;a href="https://github.com/APorkolab/hambugsy#readme" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🐛 &lt;a href="https://github.com/APorkolab/hambugsy/issues" rel="noopener noreferrer"&gt;Issue Tracker&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[x] VS Code Extension (included!)&lt;/li&gt;
&lt;li&gt;[x] Auto-fix mode (&lt;code&gt;hambugsy fix&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;[ ] IntelliJ Plugin&lt;/li&gt;
&lt;li&gt;[ ] Team analytics dashboard&lt;/li&gt;
&lt;li&gt;[ ] Slack/Teams notifications&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try It Now
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Prerequisites&lt;/span&gt;
gh extension &lt;span class="nb"&gt;install &lt;/span&gt;github/gh-copilot

&lt;span class="c"&gt;# Install Hambugsy&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; hambugsy

&lt;span class="c"&gt;# Run on your project&lt;/span&gt;
hambugsy analyze ./src

&lt;span class="c"&gt;# See what's really causing your test failures&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Feedback Welcome!
&lt;/h2&gt;

&lt;p&gt;I'd love to hear your thoughts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this useful for your workflow?&lt;/li&gt;
&lt;li&gt;What languages/frameworks would you need?&lt;/li&gt;
&lt;li&gt;Any features you'd want to see?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drop a comment below or open an issue on GitHub! 👇&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with ❤️ for the GitHub Copilot CLI Challenge&lt;/em&gt;&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
  </channel>
</rss>
