<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Code Quality on Omar Crosby</title>
    <link>https://omarcrosby.com/categories/code-quality/</link>
    <description>Recent content in Code Quality on Omar Crosby</description>
    <image>
      <title>Omar Crosby</title>
      <url>https://omarcrosby.com/images/og.jpg</url>
      <link>https://omarcrosby.com/images/og.jpg</link>
    </image>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 09 Jul 2026 13:44:25 -0400</lastBuildDate>
    <atom:link href="https://omarcrosby.com/categories/code-quality/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Static analysis for Go: what golangci-lint catches, and why it belongs in CI</title>
      <link>https://omarcrosby.com/posts/static-analysis-for-go-with-golangci-lint/</link>
      <pubDate>Thu, 09 Jul 2026 13:44:25 -0400</pubDate>
      <guid>https://omarcrosby.com/posts/static-analysis-for-go-with-golangci-lint/</guid>
      <description>A tour of golangci-lint&amp;#39;s 100-plus linters, the categories of bugs static analysis catches, and how to adopt it on a Go codebase without drowning in findings.</description>
    </item>
    <item>
      <title>Testing Go with Ginkgo and Gomega without giving up go test</title>
      <link>https://omarcrosby.com/posts/testing-go-with-ginkgo-and-gomega/</link>
      <pubDate>Thu, 09 Jul 2026 10:41:32 -0400</pubDate>
      <guid>https://omarcrosby.com/posts/testing-go-with-ginkgo-and-gomega/</guid>
      <description>Ginkgo and Gomega bring BDD-style specs and suite-level setup to Go — and every one of them still runs under the plain go test command you already trust.</description>
    </item>
    <item>
      <title>How writing tests first changes the shape of Go code</title>
      <link>https://omarcrosby.com/posts/how-writing-tests-first-changes-the-shape-of-go-code/</link>
      <pubDate>Thu, 09 Jul 2026 09:08:56 -0400</pubDate>
      <guid>https://omarcrosby.com/posts/how-writing-tests-first-changes-the-shape-of-go-code/</guid>
      <description>Writing the test before the implementation forces you to design the seam first. That&amp;#39;s where dependency injection comes from — not from discipline applied after the fact.</description>
    </item>
    <item>
      <title>kyber: function-level code quality analysis for Go</title>
      <link>https://omarcrosby.com/posts/kyber-function-level-go-code-quality/</link>
      <pubDate>Sun, 05 Jul 2026 08:00:00 -0400</pubDate>
      <guid>https://omarcrosby.com/posts/kyber-function-level-go-code-quality/</guid>
      <description>Existing Go linters tell you which lines break a rule. kyber tells you which functions carry the most risk, using twelve metrics — McCabe, cognitive, Halstead, maintainability index, and structural signals — in one pipeline.</description>
    </item>
    <item>
      <title>nasm-lint: static analysis for NASM x86 in three shapes</title>
      <link>https://omarcrosby.com/posts/nasm-lint-static-analysis-for-assembly/</link>
      <pubDate>Sat, 04 Jul 2026 11:15:00 -0400</pubDate>
      <guid>https://omarcrosby.com/posts/nasm-lint-static-analysis-for-assembly/</guid>
      <description>One Rust-written analyzer for NASM assembly, delivered as a CLI, an LSP for editor diagnostics, and a GitHub Action that emits SARIF for GitHub code scanning.</description>
    </item>
    <item>
      <title>Writing semantic-release in Go, with real monorepo support</title>
      <link>https://omarcrosby.com/posts/writing-semantic-release-in-go/</link>
      <pubDate>Sat, 04 Jul 2026 11:15:00 -0400</pubDate>
      <guid>https://omarcrosby.com/posts/writing-semantic-release-in-go/</guid>
      <description>go-semantic-release is a Go-native re-implementation of the semantic-release contract, with four monorepo discovery modes and a CLI surface compatible with the JS original. It&amp;rsquo;s what publishes this site.</description>
    </item>
  </channel>
</rss>
