gobject-linter 0.1.2

A fast tree-sitter-based linter for GObject/C code
Documentation
<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>GObject Linter Rules</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <!-- Mobile header -->
    <div class="mobile-header">
      <button id="mobileMenuBtn" class="mobile-menu-btn">
        <span class="mobile-menu-text">☰</span>
      </button>
      <span class="mobile-title">GObject Linter</span>
    </div>

    <!-- Mobile overlay -->
    <div id="mobileOverlay" class="mobile-overlay"></div>

    <div class="flex h-screen overflow-hidden">
      <!-- Sidebar -->
      <aside id="sidebar" class="sidebar w-80 border-r flex flex-col">
        <div class="p-4 border-b divider flex items-center justify-between">
          <div>
            <h1 class="text-2xl font-bold">GObject Linter</h1>
          </div>
          <a
            href="https://github.com/bilelmoussaoui/gobject-linter"
            target="_blank"
            class="opacity-60 hover:opacity-100"
          >
            <svg
              class="github-icon w-6 h-6"
              viewBox="0 0 16 16"
              fill="currentColor"
            >
              <path
                d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"
              />
            </svg>
          </a>
        </div>

        <div class="p-3 space-y-3 border-b divider">
          <input
            id="search"
            placeholder="Search..."
            class="search-input w-full px-3 py-2 rounded-lg border"
          />

          <select
            id="categoryFilter"
            class="filter-select w-full px-3 py-2 rounded-lg border"
          >
            <option value="">All Categories</option>
          </select>
        </div>

        <div id="ruleStats" class="rule-stats px-4 py-1.5 border-b divider"></div>

        <div
          id="ruleList"
          class="flex-1 overflow-y-auto overflow-x-hidden"
        ></div>
      </aside>

      <!-- Main content -->
      <main class="flex-1 overflow-y-auto">
        <div id="ruleDetail" class="max-w-6xl mx-auto px-10 py-10">
          <p class="detail-label text-lg">Select a rule to view details</p>
        </div>
      </main>
    </div>

    <script src="script.js"></script>
  </body>
</html>