# test.govlab/quality/core/parsers/tool.staticcheck.parser.test.ts

> 39 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-core-parsers-tool-staticcheck-parser-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/tool.staticcheck.parser.test.ts.txt

Listed in [test.govlab/quality/core/parsers](https://banes-lab.com/api/source/testing/test.govlab/quality/core/parsers.md), after [test.govlab/quality/core/parsers/tool.sqlfluff.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/tool.sqlfluff.parser.test.ts.md) and before [test.govlab/quality/core/parsers/tool.stylua.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/tool.stylua.parser.test.ts.md).

## Contained in

- [test.govlab/quality/core/parsers](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-quality-core-parsers.md)

## Source

```typescript
import { describe, expect, it } from "vitest";
import { parseStaticcheckOutput } from "@govlab/quality/core/parsers/tool.staticcheck.parser.ts";

const EXPECTED_COUNT = 2;

const RECORDED = [
    JSON.stringify({
        code: "S1021",
        location: { column: 2, file: "bad.go", line: 6 },
        message: "should merge variable declaration with assignment on next line",
        severity: "error",
    }),
    JSON.stringify({
        code: "SA4006",
        location: { column: 2, file: "bad.go", line: 9 },
        message: "this value of x is never used",
        severity: "error",
    }),
].join("\n");

describe("parseStaticcheckOutput", () => {
    it("maps each streamed JSON object to an advisory (advisory:true) error finding keyed by code", () => {
        const findings = parseStaticcheckOutput(RECORDED, "go");
        expect(findings).toHaveLength(EXPECTED_COUNT);
        expect(findings[0]).toMatchObject({
            advisory: true,
            column: 2,
            ecosystem: "go",
            file: "bad.go",
            line: 6,
            ruleId: "S1021",
            severity: "error",
            tool: "staticcheck",
        });
        expect(findings[1]).toMatchObject({ advisory: true, line: 9, ruleId: "SA4006" });
    });

    it("skips blank lines and returns [] on empty or non-JSON output", () => {
        expect(parseStaticcheckOutput("", "go")).toEqual([]);
        expect(parseStaticcheckOutput("\n\n", "go")).toEqual([]);
        expect(parseStaticcheckOutput("not json", "go")).toEqual([]);
    });
});
```
