# types/finding.types.ts

> 47 lines of code and 8 definitions.

Tree: GovLab Quality
Language: typescript
Layer: infrastructure
Canonical: https://banes-lab.com/anatomy/quality#file-quality-types-finding-types-ts
Source text: https://banes-lab.com/source/quality/types/finding.types.ts.txt

Listed in [types](https://banes-lab.com/api/source/quality/types.md), after [types/exclusions.types.ts](https://banes-lab.com/source/quality/types/exclusions.types.ts.md) and before [types/idiom.types.ts](https://banes-lab.com/source/quality/types/idiom.types.ts.md).

## Definitions

- `FindingSeverity` (type_alias_declaration, line 1, exported)
- `Finding` (interface_declaration, line 3, exported)
- `RunResult` (interface_declaration, line 18, exported)
- `PassOutcome` (type_alias_declaration, line 24, exported)
- `SourceLocation` (interface_declaration, line 26, exported)
- `PlacedFinding` (interface_declaration, line 32, exported)
- `AdvisoryFindingInput` (interface_declaration, line 38, exported)
- `NoticeSpec` (interface_declaration, line 48, exported)

## Contained in

- [types](https://banes-lab.com/anatomy/quality/folder-quality-types.md)

## Source

```typescript
export type FindingSeverity = "error" | "notice";

export interface Finding {
    tool: string;
    ecosystem: string;
    file: string;
    line: number;
    column: number;
    ruleId: string;
    severity: FindingSeverity;
    message: string;
    fixable: boolean;
    advisory: boolean;
    canon?: string[];
    suggestion?: string;
}

export interface RunResult {
    findings: Finding[];
    fixedCount: number;
    output: string;
}

export type PassOutcome = { terminal: false; findings: Finding[] } | { terminal: true; result: RunResult };

export interface SourceLocation {
    column: number;
    file: string;
    line: number;
}

export interface PlacedFinding {
    file: string;
    line: number;
    ruleId: string;
}

export interface AdvisoryFindingInput {
    column: number;
    ecosystem: string;
    file: string;
    line: number;
    message: string;
    ruleId: string;
    tool: string;
}

export interface NoticeSpec {
    advisory: boolean;
    message: string;
    ruleId: string;
    severity: FindingSeverity;
    output?: string;
}
```
