diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml new file mode 100644 index 0000000..522632e --- /dev/null +++ b/.github/workflows/pages.yml @@ -0,0 +1,56 @@ +name: GitHub Pages + +on: + push: + branches: [main] + paths: + - 'docs/**' + - '.github/workflows/pages.yml' + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + deploy: + name: Deploy to GitHub Pages + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + + steps: + - uses: actions/checkout@v4 + + - name: Setup Pages + uses: actions/configure-pages@v5 + + - name: Build site + run: | + mkdir -p _site + # Convert markdown to HTML with a minimal Jekyll-free approach using pandoc + sudo apt-get install -y pandoc > /dev/null 2>&1 + pandoc docs/index.md \ + --standalone \ + --metadata title="CodeClimate Visualiser — Technical Docs" \ + --css https://cdnjs.cloudflare.com/ajax/libs/github-markdown-css/5.5.1/github-markdown-dark.min.css \ + --html-q-tags \ + -o _site/index.html + # Embed body in a centred container + sed -i 's//
/' _site/index.html + sed -i 's/<\/body>/<\/article><\/body>/' _site/index.html + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: _site + + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ee2b75a..56c28fc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,19 +4,31 @@ on: push: tags: - 'v*' + workflow_dispatch: + inputs: + version: + description: 'Version to package (e.g. 1.2.3) — defaults to latest git tag' + required: false + publish: + description: 'Publish to VS Code Marketplace' + required: false + default: 'true' + type: choice + options: ['true', 'false'] jobs: release: - name: Build, Test & Release + name: Package & Publish runs-on: ubuntu-latest permissions: contents: write steps: - uses: actions/checkout@v4 + with: + fetch-depth: 0 - - name: Set up Node.js - uses: actions/setup-node@v4 + - uses: actions/setup-node@v4 with: node-version: '20' cache: npm @@ -24,6 +36,17 @@ jobs: - name: Install dependencies run: npm ci + - name: Sync version + run: | + if [[ "$GITHUB_REF" == refs/tags/v* ]]; then + npm version --no-git-tag-version "${GITHUB_REF_NAME#v}" + elif [[ -n "${{ github.event.inputs.version }}" ]]; then + npm version --no-git-tag-version "${{ github.event.inputs.version }}" + else + LATEST=$(git tag --sort=-v:refname | grep -E '^v[0-9]' | head -1) + [[ -n "$LATEST" ]] && npm version --no-git-tag-version "${LATEST#v}" + fi + - name: Compile TypeScript run: npm run compile @@ -33,8 +56,22 @@ jobs: - name: Package extension run: npm run package - - name: Create GitHub Release - uses: softprops/action-gh-release@v2 - with: - files: '*.vsix' - generate_release_notes: true + - name: Create GitHub Release if absent + if: startsWith(github.ref, 'refs/tags/v') + run: gh release view "$GITHUB_REF_NAME" || gh release create "$GITHUB_REF_NAME" --generate-notes + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload VSIX to GitHub Release + if: startsWith(github.ref, 'refs/tags/v') + run: gh release upload "$GITHUB_REF_NAME" *.vsix --clobber + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish to VS Code Marketplace + if: > + (github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')) || + (github.event_name == 'workflow_dispatch' && github.event.inputs.publish == 'true') + env: + VSCE_PAT: ${{ secrets.VSCE_PAT }} + run: npm run publish diff --git a/.github/workflows/semantic-release.yml b/.github/workflows/semantic-release.yml new file mode 100644 index 0000000..ca1bf92 --- /dev/null +++ b/.github/workflows/semantic-release.yml @@ -0,0 +1,43 @@ +name: Semantic Release + +on: + push: + branches: [main] + +jobs: + release: + name: Semantic Release + runs-on: ubuntu-latest + permissions: + contents: write + issues: write + pull-requests: write + + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + persist-credentials: false + + - uses: actions/setup-node@v4 + with: + node-version: '22' + cache: npm + + - name: Install dependencies + run: npm ci + + - name: Compile TypeScript + run: npm run compile + + - name: Run tests + run: npm test + + - name: Semantic Release + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GIT_AUTHOR_NAME: github-actions[bot] + GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com + GIT_COMMITTER_NAME: github-actions[bot] + GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com + run: npx semantic-release diff --git a/.releaserc.json b/.releaserc.json new file mode 100644 index 0000000..f94b82e --- /dev/null +++ b/.releaserc.json @@ -0,0 +1,9 @@ +{ + "branches": ["main"], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/release-notes-generator", + ["@semantic-release/npm", { "npmPublish": false }], + ["@semantic-release/github", { "assets": [] }] + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json index 3d984bf..e1d1ca1 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,7 +7,7 @@ "request": "launch", "args": ["--extensionDevelopmentPath=${workspaceFolder}", "${workspaceFolder}/testdata"], "outFiles": ["${workspaceFolder}/out/**/*.js"], - "preLaunchTask": "${defaultBuildTask}" + "preLaunchTask": "Build & seed history" } ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 6c50e84..f1e7e17 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,16 +2,27 @@ "version": "2.0.0", "tasks": [ { + "label": "npm: compile", "type": "npm", "script": "compile", - "group": { - "kind": "build", - "isDefault": true - }, - "presentation": { - "reveal": "silent" - }, + "group": { "kind": "build", "isDefault": true }, + "presentation": { "reveal": "silent" }, "problemMatcher": "$tsc" + }, + { + "label": "Seed test snapshots", + "type": "shell", + "command": "node scripts/gen-test-snapshots.js", + "presentation": { "reveal": "silent", "panel": "shared" }, + "problemMatcher": [] + }, + { + "label": "Build & seed history", + "dependsOrder": "sequence", + "dependsOn": ["npm: compile", "Seed test snapshots"], + "group": { "kind": "build", "isDefault": false }, + "presentation": { "reveal": "silent" }, + "problemMatcher": [] } ] } diff --git a/.vscodeignore b/.vscodeignore index e4d2a16..4a6e557 100644 --- a/.vscodeignore +++ b/.vscodeignore @@ -4,8 +4,13 @@ src/** testdata/** out/**/*.map node_modules/** +!node_modules/@vscode/codicons/dist/codicon.css +!node_modules/@vscode/codicons/dist/codicon.ttf **/.gitignore **/.vscodeignore tsconfig.json *.vsix .claude/** +tmp_for_claude/** +media/icon-color.svg +docs/** diff --git a/README.md b/README.md index 40f1615..885604d 100644 --- a/README.md +++ b/README.md @@ -1,159 +1,153 @@ # CodeClimate Visualiser -VS Code extension that visualises [CodeClimate](https://codeclimate.com/) JSON and NDJSON reports directly in the editor. +Visualise [CodeClimate](https://codeclimate.com/) JSON and NDJSON reports directly inside VS Code — charts, filterable issue table, inline editor decorations, snapshot history and trends. +[![VS Code Marketplace](https://img.shields.io/visual-studio-marketplace/v/lefix2.codeclimate-visualiser?label=Marketplace)](https://marketplace.visualstudio.com/items?itemName=lefix2.codeclimate-visualiser) [![CI](https://github.com/Lefix2/codeclimate-visualiser-vscode-plugin/actions/workflows/ci.yml/badge.svg)](https://github.com/Lefix2/codeclimate-visualiser-vscode-plugin/actions/workflows/ci.yml) -## Features +--- -- **Charts** — pie charts by severity, category, check name, and source file -- **Filterable issue table** — sort by any column; filter by severity, category, or free text (`;`-separated AND terms) -- **Inline decorations** — colour-coded gutters and hover messages in the editor -- **One-click navigation** — jump from any table row to the exact file and line -- **Code snippets** — view highlighted code context inside the panel (12+ languages via Prism.js) -- **Multiple reports** — load and combine as many report files as needed -- **Formats** — JSON array and NDJSON (one object per line) +## Overview -## Installation +![Overview — KPI cards, severity breakdown, category and check name charts](https://raw.githubusercontent.com/Lefix2/codeclimate-visualiser-vscode-plugin/main/docs/screenshots/overview.png) -Search for **CodeClimate Visualiser** in the VS Code Extension Marketplace, or download a `.vsix` from the [Releases](https://github.com/Lefix2/codeclimate-visualiser-vscode-plugin/releases) page and install it with: +The **Overview** tab shows at a glance: -```sh -code --install-extension codeclimate-visualiser-.vsix -``` +- **KPI cards** for each severity (Blocker → Info) with delta vs last snapshot +- **Severity Breakdown** donut chart +- **By Category**, **Top Check Names**, **Top Files**, **By Source** bar charts — every row is clickable and opens the Issues view pre-filtered -## Usage +--- -### Commands +## Issues Table -Open the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`) and run: +![Filterable issue table with severity, category, tool and search filters](https://raw.githubusercontent.com/Lefix2/codeclimate-visualiser-vscode-plugin/main/docs/screenshots/issue-list.png) -| Command | Description | -|---------|-------------| -| `CodeClimate: Open View` | Open the visualisation panel; auto-loads reports from the project config | -| `CodeClimate: Open Report(s)` | Browse for one or more report files to load | -| `CodeClimate: Load from Configured Paths` | Reload all reports matching the configured glob patterns | -| `CodeClimate: Clear All` | Unload all currently loaded reports | +The **Issues** tab provides a fully filterable table: + +- Quick-filter chips by **severity**, **category**, **tool** and any custom column +- **New issues** chip (`▲ N new issues`) highlights issues not present in the last snapshot +- Free-text search with `;`-separated AND terms +- Click any row to jump to the exact file and line in the editor + +--- + +## Inline Decorations & Sidebar + +![Sidebar with issues list and inline editor decorations](https://raw.githubusercontent.com/Lefix2/codeclimate-visualiser-vscode-plugin/main/docs/screenshots/embedded-view.png) + +- **Sidebar panel** lists issues grouped by file, with severity dots and one-click navigation +- **Inline decorations** colour the gutter and show a hover tooltip with the issue description and source report +- Filter, sort, collapse and reload directly from the sidebar header + +--- + +## History & Trends + +![Trends view — new vs fixed chart, total over time, per-severity sparklines](https://raw.githubusercontent.com/Lefix2/codeclimate-visualiser-vscode-plugin/main/docs/screenshots/trends.png) + +Save a **snapshot** at any point (tag icon in the History section). The **Trends** tab then shows: + +- **New vs Fixed** area chart across snapshots +- **Total Issues Over Time** multi-line chart +- Per-severity sparkline cards — click to filter the Issues view + +--- + +## Getting Started + +### 1 — Install + +Search **CodeClimate Visualiser** in the VS Code Extension Marketplace, or install a `.vsix` from [Releases](https://github.com/Lefix2/codeclimate-visualiser-vscode-plugin/releases): + +```sh +code --install-extension codeclimate-visualiser-.vsix +``` -You can also right-click any `.json` file in the Explorer or an open editor to load it directly. +### 2 — Open the view -### Workflow +Open the Command Palette (`Ctrl+Shift+P` / `Cmd+Shift+P`) and run **CodeClimate: Open View**, or click the bar-chart icon in the Activity Bar. -1. Run your CodeClimate analysis and save the output as a `.json` or NDJSON file. -2. Open the Command Palette and run **CodeClimate: Open View**. -3. If a project config exists (see below), reports load automatically. Otherwise use **Open Report(s)** to browse for a file. -4. Use the charts to spot hot-spots and the table to drill down into individual issues. +### 3 — Load a report -## Configuration +| Method | How | +|--------|-----| +| Auto-load | Create `.vscode/codeclimate-visualiser.json` with `reportPatterns` (see below) | +| Browse | Run **CodeClimate: Open Report(s)** or click **+ Load report…** in the sidebar | +| Context menu | Right-click any `.json` file → **Load as CodeClimate Report** | -### Per-project configuration (recommended) +--- -Create `.vscode/codeclimate-visualiser.json` at the root of your workspace: +## Project Configuration + +Create `.vscode/codeclimate-visualiser.json` at the workspace root: ```json { - "$schema": "./schemas/codeclimate-visualiser.schema.json", "reportPatterns": [ - "reports/*.json" + "reports/*.json", + "reports/semgrep-report.ndjson" ] } ``` -The `reportPatterns` array accepts glob patterns (VS Code glob syntax) and absolute paths. All matching files are loaded when the view opens or when **Load from Configured Paths** is run. - -### VS Code settings +Reports reload automatically when the view opens or when **CodeClimate: Reload Config** is run (refresh icon in the Reports section header). -| Setting | Type | Default | Description | -|---------|------|---------|-------------| -| `codeclimateVisualiser.reportPatterns` | `string[]` | `[]` | Glob patterns or absolute paths to reports (workspace-level fallback) | -| `codeclimateVisualiser.showChartLegends` | `boolean` | `false` | Show legends on the charts | +--- -## CodeClimate report format +## Supported Report Format -The extension accepts any file that CodeClimate (or a compatible tool) produces. +The extension accepts any file that CodeClimate or a compatible tool produces. -**JSON array** (standard `--format json`): +**JSON array** (`--format json`): ```json [ { "type": "issue", "check_name": "rubocop/Style/StringLiterals", - "description": "Prefer single-quoted strings when you don't need string interpolation.", + "description": "Prefer single-quoted strings.", "categories": ["Style"], - "location": { - "path": "app/models/user.rb", - "lines": { "begin": 12, "end": 12 } - }, + "location": { "path": "app/models/user.rb", "lines": { "begin": 12 } }, "severity": "minor", "fingerprint": "abc123" } ] ``` -**NDJSON** (one JSON object per line, `--format ndjson` or streaming output): +**NDJSON** (one object per line): ``` -{"type":"issue","check_name":"rubocop/Style/StringLiterals",...} {"type":"issue","check_name":"rubocop/Metrics/MethodLength",...} ``` -Supported `severity` values: `info`, `minor`, `major`, `critical`, `blocker`. - -Both plain integer line numbers and `{ line, column }` objects are supported for `lines.begin` / `lines.end`. - -## Development - -### Prerequisites - -- Node.js 20+ -- npm 10+ - -### Build - -```sh -npm install # install dependencies -npm run compile # compile TypeScript → out/ -npm run watch # watch mode (recompile on save) -``` - -### Test +Supported severities: `blocker` · `critical` · `major` · `minor` · `info` -Tests use [Mocha](https://mochajs.org/) and [ts-node](https://typestrong.org/ts-node/). The VS Code API is mocked so the suite runs without a VS Code instance. +--- -```sh -npm test -``` - -Tests cover: +## Commands -- `src/parser.ts` — JSON array parsing, NDJSON parsing, edge cases (empty input, malformed JSON, missing fields, all severity levels, `{line,column}` refs), real test-data files -- `src/issueManager.ts` — load/reload/remove/clear, unique IDs, `onChange` events, multi-file accumulation, `getIssuesForRelativePath` (relative, absolute, Windows backslash) - -### Package - -```sh -npm run package # produces codeclimate-visualiser-.vsix -``` - -### Debug in VS Code - -Press `F5` to launch the **Extension Development Host** (configured in `.vscode/launch.json`). The `testdata/` folder is opened as the test workspace so you can exercise the extension immediately. +| Command | Description | +|---------|-------------| +| `CodeClimate: Open View` | Open the visualisation panel | +| `CodeClimate: Open Report(s)` | Browse for one or more report files | +| `CodeClimate: Reload Config` | Reload reports from the project config | +| `CodeClimate: Clear All` | Unload all reports | +| `CodeClimate: Save Snapshot` | Save current issue counts as a history snapshot | -## Release process +--- -1. Update `"version"` in `package.json`. -2. Commit and push. -3. Create and push a tag: `git tag v && git push origin v`. -4. The [Release workflow](.github/workflows/release.yml) runs automatically: it compiles, tests, packages the `.vsix`, and creates a GitHub Release with the file attached. +## Settings -## Contributing +| Setting | Default | Description | +|---------|---------|-------------| +| `codeclimateVisualiser.reportPatterns` | `[]` | Glob patterns or absolute paths (workspace fallback) | +| `codeclimateVisualiser.showChartLegends` | `false` | Show legends on charts | +| `codeclimateVisualiser.showSeverityFilter` | `true` | Show severity quick-filter bar | +| `codeclimateVisualiser.showCategoryFilter` | `true` | Show category quick-filter chips | +| `codeclimateVisualiser.showCheckNameFilter` | `true` | Show check-name quick-filter chips | -1. Fork the repository. -2. Create a feature branch from `main`. -3. Make your changes and add/update tests. -4. Verify everything passes: `npm run compile && npm test`. -5. Open a pull request targeting `main` — the CI workflow runs automatically. +--- ## License diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..2421699 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,323 @@ +# CodeClimate Visualiser — Technical Documentation + +> Developer reference for contributors. For end-user docs see [README](../README.md) or the [VS Code Marketplace page](https://marketplace.visualstudio.com/items?itemName=lefix2.codeclimate-visualiser). + +## Table of Contents + +- [Architecture](#architecture) +- [Source Map](#source-map) +- [Data Flow](#data-flow) +- [Key Types](#key-types) +- [Configuration Schema](#configuration-schema) +- [History & Fingerprinting](#history--fingerprinting) +- [Webview Protocol](#webview-protocol) +- [Custom Columns](#custom-columns) +- [Development](#development) +- [Release Process](#release-process) + +--- + +## Architecture + +``` +Extension Host (Node.js) +├── extension.ts — activate(), command registrations, wiring +├── issueManager.ts — in-memory store, file load/remove, onChange events +├── parser.ts — JSON array + NDJSON → CodeClimateIssue[] +├── historyManager.ts — NDJSON snapshot store, fingerprint diff +├── decorationProvider.ts — inline gutter decorations +├── webviewPanel.ts — main dashboard (WebviewPanel) +└── sourcesViewProvider.ts — sidebar panel (WebviewViewProvider) + +Webview (sandboxed browser context) +├── media/webview.js — full dashboard SPA (Overview/Issues/Files/Treemap/Trends) +├── media/webview.css — dashboard styles +└── media/sidebar scripts — embedded in sourcesViewProvider.ts HTML template +``` + +The extension host and both webviews communicate exclusively via `postMessage` / `onDidReceiveMessage`. + +--- + +## Source Map + +| File | Responsibility | +|------|---------------| +| `src/extension.ts` | Entry point. Registers all commands, wires `IssueManager` → `SourcesViewProvider` → `WebviewPanel` → `HistoryManager`. Handles file-load commands and the project config (`autoLoadFromConfig`). | +| `src/parser.ts` | Parses a single report file. Accepts JSON array and NDJSON. Normalises `LineRef` variants (`number` vs `{line,column}`). Returns `CodeClimateIssue[]`. | +| `src/issueManager.ts` | Singleton store. Maps file URIs to parsed issues. Emits `onChange` to both the sidebar and the panel. Assigns stable `id` (UUID) to each issue on load. Attaches `customColumns` values. | +| `src/historyManager.ts` | Reads/writes `/.vscode/codeclimate-visualiser.history.ndjson`. Saves snapshots with fingerprint sets. Computes new/fixed/persisting sets via `Set` intersection. Exposes `resolveIssueFingerprint()` for the panel to tag live issues as new. | +| `src/decorationProvider.ts` | Implements `FileDecorationProvider`. Listens for `onChange` and registers coloured gutter decorations per file/line. | +| `src/webviewPanel.ts` | Manages the `WebviewPanel`. Calls `issueManager.getAllIssues()`, augments each issue with `isNew` (comparing fingerprints against last snapshot), then posts the full state to the webview. | +| `src/sourcesViewProvider.ts` | Manages the sidebar `WebviewView`. Contains the full HTML/CSS/JS template as a template literal. Handles messages for `removeSource`, `focusIssue`, `openFile`, `deleteSnapshot`, `command`. | +| `media/webview.js` | Self-contained SPA. Receives `update` messages and re-renders all views. No bundler — plain ES2020 with ` @@ -213,7 +292,10 @@ export class CodeClimatePanel implements vscode.Disposable { type WebviewMessage = | { type: 'openFile'; filePath: string; line: number } | { type: 'removeSourceFile'; uri: string } - | { type: 'requestSnippet'; issueId: string; filePath: string; line: number }; + | { type: 'requestSnippet'; issueId: string; filePath: string; line: number } + | { type: 'deleteSnapshot'; id: string } + | { type: 'editSnapshotLabel'; id: string; label: string } + | { type: 'runAction'; id: string }; function getNonce(): string { let t = ''; diff --git a/test/issueManager.test.ts b/test/issueManager.test.ts index 7644c6a..dd6de6f 100644 --- a/test/issueManager.test.ts +++ b/test/issueManager.test.ts @@ -181,6 +181,50 @@ describe('IssueManager', () => { }); }); + describe('customColumns', () => { + it('stores custom columns set via setCustomColumns', () => { + const manager = new IssueManager(); + manager.setCustomColumns([{ name: 'tool', index: 3 }]); + assert.deepStrictEqual(manager.getCustomColumns(), [{ name: 'tool', index: 3 }]); + }); + + it('fires onChange when custom columns change', (done) => { + const manager = new IssueManager(); + manager.onChange(() => done()); + manager.setCustomColumns([{ name: 'env', index: 2 }]); + }); + + it('replaces previous custom columns', () => { + const manager = new IssueManager(); + manager.setCustomColumns([{ name: 'a', index: 0 }]); + manager.setCustomColumns([{ name: 'b', index: 1 }, { name: 'c', index: 2 }]); + assert.strictEqual(manager.getCustomColumns().length, 2); + assert.strictEqual(manager.getCustomColumns()[0].name, 'b'); + }); + + it('attaches column values to loaded issues', () => { + const p = writeReport('colvals.json', makeIssues(2)); + const manager = new IssueManager(); + manager.loadFile(makeUri(p), { tool: 'eslint', env: 'ci' }); + + const issues = manager.getAllIssues(); + assert.strictEqual(issues[0].customColumns?.['tool'], 'eslint'); + assert.strictEqual(issues[0].customColumns?.['env'], 'ci'); + }); + + it('column values are independent per file', () => { + const p1 = writeReport('col-a.json', makeIssues(1)); + const p2 = writeReport('col-b.json', makeIssues(1)); + const manager = new IssueManager(); + manager.loadFile(makeUri(p1), { tool: 'eslint' }); + manager.loadFile(makeUri(p2), { tool: 'semgrep' }); + + const issues = manager.getAllIssues(); + const tools = issues.map((i) => i.customColumns?.['tool']).sort(); + assert.deepStrictEqual(tools, ['eslint', 'semgrep']); + }); + }); + describe('getIssuesForRelativePath', () => { it('returns issues matching an exact relative path', () => { const issues = [ diff --git a/test/parser.test.ts b/test/parser.test.ts index 1f4dc60..4406835 100644 --- a/test/parser.test.ts +++ b/test/parser.test.ts @@ -185,27 +185,75 @@ describe('parseCodeClimateFile', () => { }); describe('real test data', () => { - it('parses NDJSON testdata file (codeparser-dispatch.json)', () => { - const content = fs.readFileSync( - path.join(TESTDATA_DIR, 'codeparser-dispatch.json'), - 'utf-8' - ); + for (const filename of ['eslint-report.json', 'codeparser-report.json', 'semgrep-report.json']) { + it(`parses NDJSON testdata file (${filename})`, () => { + const content = fs.readFileSync( + path.join(TESTDATA_DIR, filename), + 'utf-8' + ); + const issues = parseCodeClimateFile(content); + assert.ok(issues.length > 0, 'should parse at least one issue'); + for (const issue of issues) { + assert.strictEqual(issue.type, 'issue'); + assert.strictEqual(typeof issue.check_name, 'string'); + assert.ok(issue.location?.path, 'each issue should have a path'); + } + }); + } + + it('eslint report contains expected check names', () => { + const content = fs.readFileSync(path.join(TESTDATA_DIR, 'eslint-report.json'), 'utf-8'); const issues = parseCodeClimateFile(content); - assert.ok(issues.length > 0, 'should parse at least one issue'); - for (const issue of issues) { - assert.strictEqual(issue.type, 'issue'); - assert.strictEqual(typeof issue.check_name, 'string'); - assert.ok(issue.location?.path, 'each issue should have a path'); - } + const checkNames = issues.map((i) => i.check_name); + assert.ok(checkNames.includes('no-var'), 'should include no-var'); + assert.ok(checkNames.includes('eqeqeq'), 'should include eqeqeq'); }); - it('parses NDJSON testdata file (codeparser-gesmaj.json)', () => { - const content = fs.readFileSync( - path.join(TESTDATA_DIR, 'codeparser-gesmaj.json'), - 'utf-8' - ); + it('eslint report severity range includes minor through major', () => { + const content = fs.readFileSync(path.join(TESTDATA_DIR, 'eslint-report.json'), 'utf-8'); + const issues = parseCodeClimateFile(content); + const severities = new Set(issues.map((i) => i.severity)); + assert.ok(severities.has('minor')); + assert.ok(severities.has('major')); + }); + + it('codeparser report includes issues with other_locations', () => { + const content = fs.readFileSync(path.join(TESTDATA_DIR, 'codeparser-report.json'), 'utf-8'); + const issues = parseCodeClimateFile(content); + const withOther = issues.filter((i) => i.other_locations && i.other_locations.length > 0); + assert.ok(withOther.length > 0, 'at least one issue should have other_locations'); + }); + + it('codeparser report references C source files', () => { + const content = fs.readFileSync(path.join(TESTDATA_DIR, 'codeparser-report.json'), 'utf-8'); const issues = parseCodeClimateFile(content); - assert.ok(issues.length > 0, 'should parse at least one issue'); + const paths = issues.map((i) => i.location.path); + assert.ok(paths.some((p) => p.endsWith('.c') || p.endsWith('.h')), 'should reference .c or .h files'); + }); + + it('semgrep report contains only Security/Bug Risk categories', () => { + const content = fs.readFileSync(path.join(TESTDATA_DIR, 'semgrep-report.json'), 'utf-8'); + const issues = parseCodeClimateFile(content); + const allCategories = issues.flatMap((i) => i.categories ?? []); + const unexpected = allCategories.filter((c) => c !== 'Security' && c !== 'Bug Risk'); + assert.strictEqual(unexpected.length, 0, `unexpected categories: ${unexpected.join(', ')}`); + }); + + it('semgrep report includes blocker severity', () => { + const content = fs.readFileSync(path.join(TESTDATA_DIR, 'semgrep-report.json'), 'utf-8'); + const issues = parseCodeClimateFile(content); + const severities = new Set(issues.map((i) => i.severity)); + assert.ok(severities.has('blocker'), 'semgrep report should have blocker severity'); + }); + + it('all reports have fingerprints', () => { + for (const filename of ['eslint-report.json', 'codeparser-report.json', 'semgrep-report.json']) { + const content = fs.readFileSync(path.join(TESTDATA_DIR, filename), 'utf-8'); + const issues = parseCodeClimateFile(content); + for (const issue of issues) { + assert.ok(issue.fingerprint, `${filename}: issue "${issue.check_name}" missing fingerprint`); + } + } }); }); }); diff --git a/testdata/.vscode/codeclimate-visualiser.json b/testdata/.vscode/codeclimate-visualiser.json index a83247a..b9738af 100644 --- a/testdata/.vscode/codeclimate-visualiser.json +++ b/testdata/.vscode/codeclimate-visualiser.json @@ -1,27 +1,71 @@ { + "historyPath": "reports/history/codeclimate-visualiser.history.ndjson", "customColumns": [ { "name": "outil", "index": 0, - "showChart": false, - "showQuickFilter": true + "showChart": true, + "showQuickFilter": true, + "showFilter": true }, { - "name": "sous-système", - "index": 2, + "name": "package", + "index": 1, "showChart": true, "showQuickFilter": true, + "showFilter": true, "fromField": "location.path", - "fieldRegex": ".*/sous-systemes/(\\w+)/.*" + "fieldRegex": "src/([^/]+)/.*" } ], "reportPatterns": [ { - "glob": "reports/*-*.json", - "regex": "(\\w+)-(\\w+)\\.json", + "glob": "reports/*.json", + "regex": "(\\w+)-.*\\.json", "values": { "outil": "$0" } } + ], + "actions": [ + { + "id": "echo-hello", + "label": "Echo Hello", + "description": "Simple shell command to test action execution.", + "command": "echo 'hello from action'" + }, + { + "id": "refresh-view", + "label": "Reload Reports", + "description": "Reload all configured report files into the view.", + "vsCodeCommand": "codeclimateVisualiser.reloadConfig" + }, + { + "id": "save-snapshot", + "label": "Save Snapshot", + "description": "Save a history snapshot of current issues.", + "vsCodeCommand": "codeclimateVisualiser.saveSnapshot" + }, + { + "id": "analyse-and-reload", + "label": "Analyse + Reload", + "description": "Run analysis then reload (simulated with echo + reload). Chains two actions.", + "command": "echo 'analysis done'", + "then": ["refresh-view"] + }, + { + "id": "grep-errors", + "label": "Grep Errors", + "description": "Search for 'error' keyword in src/ and generate reports/grep-report.json in CodeClimate format.", + "command": "node scripts/grep-errors.js", + "onSave": ["src/**/*.ts", "src/**/*.c", "src/**/*.h"], + "refreshView": true + }, + { + "id": "failing-action", + "label": "Failing Action", + "description": "Always exits with error — tests the error state display.", + "command": "exit 1" + } ] -} \ No newline at end of file +} diff --git a/testdata/reports/codeparser-dispatch.json b/testdata/reports/codeparser-dispatch.json deleted file mode 100644 index 1271af8..0000000 --- a/testdata/reports/codeparser-dispatch.json +++ /dev/null @@ -1,95 +0,0 @@ -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'cui16_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"d9d5e501827d2a5c17bfea2f9fbd67ba170c2a8916a63db663331c7c9d53d658","location":{"lines":{"begin":{"column":56,"line":66},"end":{"column":71,"line":66}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/b_bus/include/disb_ext.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b0226e5e6306b7bf75789549b0633ffd5606976c5dc339a7e97eba06ffb1018c","location":{"lines":{"begin":{"column":44,"line":82},"end":{"column":50,"line":82}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/b_bus/include/disb_ext.h"},"severity":"major","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"126ebacc7c1ad266c02374bac61e15eceac05775e0dfe0db4411ee634f9d534d","location":{"lines":{"begin":{"column":3,"line":175},"end":{"column":22,"line":175}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_systeme/a_api/source/disy_systeme.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"126ebacc7c1ad266c02374bac61e15eceac05775e0dfe0db4411ee634f9d534d","location":{"lines":{"begin":{"column":3,"line":239},"end":{"column":22,"line":239}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_systeme/a_api/source/disy_systeme.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"126ebacc7c1ad266c02374bac61e15eceac05775e0dfe0db4411ee634f9d534d","location":{"lines":{"begin":{"column":3,"line":289},"end":{"column":22,"line":289}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_systeme/a_api/source/disy_systeme.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"126ebacc7c1ad266c02374bac61e15eceac05775e0dfe0db4411ee634f9d534d","location":{"lines":{"begin":{"column":3,"line":365},"end":{"column":22,"line":365}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_systeme/a_api/source/disy_systeme.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"126ebacc7c1ad266c02374bac61e15eceac05775e0dfe0db4411ee634f9d534d","location":{"lines":{"begin":{"column":3,"line":422},"end":{"column":22,"line":422}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_systeme/a_api/source/disy_systeme.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"126ebacc7c1ad266c02374bac61e15eceac05775e0dfe0db4411ee634f9d534d","location":{"lines":{"begin":{"column":3,"line":469},"end":{"column":22,"line":469}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_systeme/a_api/source/disy_systeme.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"c5f5ecdaf2a297055b55f91cc08ebd8ec9c230a80fd3e44500a1b48db7c5334d","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_systeme/a_api/source/disy_systeme.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_bornes_int\\{.+(,.+){2}\\}' attendu pour l'appel de SNTL_PRECOND_BORNES_INT"},"description":"Absence de commentaire avant un appel","fingerprint":"4c29764f68ce31cbd4b72a7b6c5440f8aa173661da2d6ce7a5a16fd6293c556f","location":{"lines":{"begin":{"column":3,"line":374},"end":{"column":25,"line":374}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"7c01800de325993f507df63203e997ef0c3a68e60bd51892092616c9dfe7ecd3","location":{"lines":{"begin":{"column":7,"line":204},"end":{"column":10,"line":204}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"3cc7d5025353c84522d5e8ecd52edf559bae6ed2209d02391744602e718e9e53","location":{"lines":{"begin":{"column":6,"line":306},"end":{"column":31,"line":306}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"e3169c209ddbe2a878af3ce66debeca624c6824e8c6043677770ac322f17a655","location":{"lines":{"begin":{"column":7,"line":357},"end":{"column":32,"line":357}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"f423eab6f300b399f937420a18a75d715d638c526165d5a6bf5f08c6ba29950f","location":{"lines":{"begin":{"column":6,"line":456},"end":{"column":45,"line":456}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"9faa243de6d6801febe3dbbd5733f05b5650121657739d635a4ba76e22a78092","location":{"lines":{"begin":{"column":7,"line":573},"end":{"column":47,"line":573}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"989e070a2e70b0d5f45bbc45eceb1ca3d2c8cfe17380fd5a1036b04d3737c1fe","location":{"lines":{"begin":{"column":10,"line":617},"end":{"column":42,"line":617}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"e7a60fc800ca5cf8f0b0f082abbf2cbcbe2028d424560dac493f90657f87b7d7","location":{"lines":{"begin":{"column":10,"line":682},"end":{"column":46,"line":682}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"7567fc75b5b4f38f502dd9a4de2707e41991c1f4fc6b1ad9ae182b3c21a5ec3a","location":{"lines":{"begin":{"column":10,"line":746},"end":{"column":45,"line":746}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"149895a025f551f9f707782ad379601be0767d9038b7360a33fd5870d2a3621f","location":{"lines":{"begin":{"column":10,"line":851},"end":{"column":45,"line":851}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"a68cbb8435aa9b639e362f65c1b5606ed19522d6c4771bc0aec2c21fdc964461","location":{"lines":{"begin":{"column":6,"line":1016},"end":{"column":41,"line":1016}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISM_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"2844fa3310f0165fbfb9818cfc85fdede062202a51b9e81662ae3d8fdc8f0af9","location":{"lines":{"begin":{"column":7,"line":121},"end":{"column":47,"line":121}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISM_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"2d56a396a5801f6071c7cb2bc7b5dd4310b2eb625cf7eef54262213800f619ed","location":{"lines":{"begin":{"column":10,"line":124},"end":{"column":42,"line":124}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISM_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"eae5e064f8dbbed946a080eed4f44cd316e46029f3a8beea531f79be0bdbcd49","location":{"lines":{"begin":{"column":10,"line":130},"end":{"column":46,"line":130}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISM_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"b6769361bd64e2089b8401a79a7cb14ca0ac6a89a349ad0be3ae8de4e9e3ca0e","location":{"lines":{"begin":{"column":10,"line":136},"end":{"column":45,"line":136}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISM_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"b631f20f429eb28d3fff53bddbbf285197a63eb94149be8c5ebc4047d9988cf5","location":{"lines":{"begin":{"column":10,"line":143},"end":{"column":45,"line":143}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISM_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"95e721f02bc8a9b087fa49fcb0f82388b5b4878346df5e01944bef6cb2990dc1","location":{"lines":{"begin":{"column":6,"line":153},"end":{"column":45,"line":153}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch/m_main/source/dism_api_ssyst.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'h_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"74c6cd161aa3b959c71ffa81216c2e88be5e0818fa4e3cb48b772d9e42f83279","location":{"lines":{"begin":{"column":42,"line":424},"end":{"column":46,"line":424}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/commun/include/dis_instance_dispatch_ext.h"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"add24b83d49f5a853c5fe7c21baad67b5b0c2ac85cf378433e1f9927ddae5c72","location":{"lines":{"begin":{"column":26,"line":489},"end":{"column":80,"line":489}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"add24b83d49f5a853c5fe7c21baad67b5b0c2ac85cf378433e1f9927ddae5c72","location":{"lines":{"begin":{"column":26,"line":521},"end":{"column":80,"line":521}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"a4a74f5567cf6a083966ac4338e5df1538be58d7cdbe7d693dd5c7f1a03c0e7d","location":{"lines":{"begin":{"column":57,"line":902},"end":{"column":87,"line":903}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"43c295c02cfb36db19caf41bc9b1cce8971ea45a8f5610bd6e6ec7c27650c3be","location":{"lines":{"begin":{"column":13,"line":906},"end":{"column":62,"line":906}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"1d6023793cc06698d4958c3d31b5603e15f049b95ca61fa115ca2599673bc513","location":{"lines":{"begin":{"column":26,"line":489},"end":{"column":80,"line":489}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"1d6023793cc06698d4958c3d31b5603e15f049b95ca61fa115ca2599673bc513","location":{"lines":{"begin":{"column":26,"line":521},"end":{"column":80,"line":521}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f121adb26c7fd2c8a1c325631b4aa4c6f078c74775178ce68adf2e34589f8850","location":{"lines":{"begin":{"column":42,"line":67},"end":{"column":47,"line":67}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"20aa245f4568ea202aeb01cb4875db9d604dab6f8745f349618f86fef43820a3","location":{"lines":{"begin":{"column":56,"line":67},"end":{"column":63,"line":67}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f121adb26c7fd2c8a1c325631b4aa4c6f078c74775178ce68adf2e34589f8850","location":{"lines":{"begin":{"column":40,"line":68},"end":{"column":45,"line":68}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"fea5a75d02eb618691ca8c13840025b2dbd46a334866f289cf4ef44850ba4f11","location":{"lines":{"begin":{"column":37,"line":73},"end":{"column":40,"line":73}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_[ap]ui16_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"228036ab0a203260283d719c3b188e80c1baad9ce357073bcc30821d35612775","location":{"lines":{"begin":{"column":22,"line":107},"end":{"column":76,"line":107}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_[ap]ui16_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"7a96d3710fa2eabde4c79ae4bf7aa89f2319445fbd4ad9981a87c3a8c5ce835a","location":{"lines":{"begin":{"column":18,"line":110},"end":{"column":73,"line":110}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_h_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"0fc4a2134cd9b14ec2ce2a201fc7ec219e1df092d720b4535471fdb246f5c462","location":{"lines":{"begin":{"column":18,"line":112},"end":{"column":37,"line":112}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_ui_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c780ab3c0ce305b200d1e6f2c0f82fa5d1071aaebe36216306a5a808ca978649","location":{"lines":{"begin":{"column":18,"line":114},"end":{"column":42,"line":114}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_b_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"fcd4caa1c21ad4fa123135e45dd617b5a35af00554fb70bb88d80c1e5a7fb008","location":{"lines":{"begin":{"column":18,"line":116},"end":{"column":27,"line":116}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_ui8_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"5e3d2669b88d51c04d6e819fc0d85ff8ad169ff58e3845e251335047c392f38f","location":{"lines":{"begin":{"column":18,"line":118},"end":{"column":29,"line":118}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_ui16_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4d6f223c2f91fa97048b1274327e47d214b27c773426c26e4f823837c05e66d4","location":{"lines":{"begin":{"column":18,"line":120},"end":{"column":30,"line":120}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_f64_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"74f3eb6c4483163f8a749657fc5a44bae932966403d238110ec4eab208f84d59","location":{"lines":{"begin":{"column":18,"line":122},"end":{"column":31,"line":122}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_[ap]ui8_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"a400c519b68bbdd25b833a9e67d86a260294ef13f966a6ee687bc4a607b28dfe","location":{"lines":{"begin":{"column":18,"line":124},"end":{"column":30,"line":124}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f121adb26c7fd2c8a1c325631b4aa4c6f078c74775178ce68adf2e34589f8850","location":{"lines":{"begin":{"column":42,"line":198},"end":{"column":47,"line":198}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"20aa245f4568ea202aeb01cb4875db9d604dab6f8745f349618f86fef43820a3","location":{"lines":{"begin":{"column":56,"line":198},"end":{"column":63,"line":198}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f121adb26c7fd2c8a1c325631b4aa4c6f078c74775178ce68adf2e34589f8850","location":{"lines":{"begin":{"column":40,"line":211},"end":{"column":45,"line":211}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"637bc31d3adc9dbdc4186ce623b69f1bcc75b0ce72294d11243c9593b250e477","location":{"lines":{"begin":{"column":7,"line":245},"end":{"column":7,"line":245}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"637bc31d3adc9dbdc4186ce623b69f1bcc75b0ce72294d11243c9593b250e477","location":{"lines":{"begin":{"column":29,"line":311},"end":{"column":29,"line":311}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'ui8_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"637bc31d3adc9dbdc4186ce623b69f1bcc75b0ce72294d11243c9593b250e477","location":{"lines":{"begin":{"column":11,"line":415},"end":{"column":11,"line":415}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"06fe5c4551f177a4df43a73a85e74168f99e80afc37e4a6191f90befea7b729f","location":{"lines":{"begin":{"column":8,"line":640},"end":{"column":13,"line":640}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c22f3cd9336bc80677e0e52ccd4e19bdabc9930d9daa29db542e07881b4ed99b","location":{"lines":{"begin":{"column":8,"line":641},"end":{"column":13,"line":641}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"fea5a75d02eb618691ca8c13840025b2dbd46a334866f289cf4ef44850ba4f11","location":{"lines":{"begin":{"column":37,"line":837},"end":{"column":40,"line":837}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4b37b0e954a2fa6737a248e5f9acf00a27af275bd463350f3deccbf59267a1d1","location":{"lines":{"begin":{"column":26,"line":849},"end":{"column":41,"line":849}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4b835b135b8122bb4237444c4ae4a212cd6f19035b7a8bee566e73ba7c3ad800","location":{"lines":{"begin":{"column":28,"line":1030},"end":{"column":37,"line":1030}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '(r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cd108107c90352d96e925c033b63f2f56f76cda292506ce993ba93a3c231ab0b","location":{"lines":{"begin":{"column":23,"line":1033},"end":{"column":33,"line":1033}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"zero-init-local-var","content":{"body":""},"description":"Variable de portée globale initialisée à 0","fingerprint":"0cd60d8195bbabed35fcbb56d062cdb2de9d9b0d39c645a6c0749830e23f853f","location":{"lines":{"begin":{"column":46,"line":114},"end":{"column":46,"line":114}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["decl"],"check_name":"zero-init-local-var","content":{"body":""},"description":"Variable de portée globale initialisée à 0","fingerprint":"0cd60d8195bbabed35fcbb56d062cdb2de9d9b0d39c645a6c0749830e23f853f","location":{"lines":{"begin":{"column":9,"line":119},"end":{"column":9,"line":119}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["decl"],"check_name":"zero-init-local-var","content":{"body":""},"description":"Variable de portée globale initialisée à 0","fingerprint":"0cd60d8195bbabed35fcbb56d062cdb2de9d9b0d39c645a6c0749830e23f853f","location":{"lines":{"begin":{"column":35,"line":120},"end":{"column":35,"line":120}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["decl"],"check_name":"zero-init-local-var","content":{"body":""},"description":"Variable de portée globale initialisée à 0","fingerprint":"0cd60d8195bbabed35fcbb56d062cdb2de9d9b0d39c645a6c0749830e23f853f","location":{"lines":{"begin":{"column":35,"line":122},"end":{"column":35,"line":122}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_dispatch_integration_test/m_main/source/dispatch_integration_test.c"},"severity":"critical","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":200},"end":{"column":22,"line":200}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":207},"end":{"column":22,"line":207}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":372},"end":{"column":22,"line":372}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":379},"end":{"column":22,"line":379}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":505},"end":{"column":22,"line":505}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":639},"end":{"column":22,"line":639}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":737},"end":{"column":22,"line":737}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":869},"end":{"column":22,"line":869}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":925},"end":{"column":22,"line":925}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":932},"end":{"column":22,"line":932}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":988},"end":{"column":22,"line":988}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1031},"end":{"column":22,"line":1031}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1094},"end":{"column":22,"line":1094}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1101},"end":{"column":22,"line":1101}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1193},"end":{"column":22,"line":1193}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1232},"end":{"column":22,"line":1232}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1290},"end":{"column":22,"line":1290}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1299},"end":{"column":22,"line":1299}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1396},"end":{"column":22,"line":1396}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1405},"end":{"column":22,"line":1405}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1484},"end":{"column":22,"line":1484}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1493},"end":{"column":22,"line":1493}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"08a52c72df83230b407c45e3f083f854018d8adddf986c0915d7c0631fee0eb3","location":{"lines":{"begin":{"column":3,"line":1569},"end":{"column":22,"line":1569}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"29150efb4eb9f8df2d6a3614a62dc8f23e5254358b90adbec3cd2974e7ac74a9","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cd8aa6021e92f7257b48159de5a650527094a420ba18ee55e1bafe41f177870c","location":{"lines":{"begin":{"column":11,"line":1556},"end":{"column":18,"line":1556}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/lib_dispatch_service/a_api/source/disa_services.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"8b85d27ff2fba73a17b3f760a508a8febb422085dbcbaf4799a7bb4b439f626d","location":{"lines":{"begin":{"column":7,"line":142},"end":{"column":10,"line":142}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"4df5d121662393337e6c0058eb2681db197356aed9933793f95d106091df37a6","location":{"lines":{"begin":{"column":6,"line":230},"end":{"column":23,"line":230}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"c9b66783410b5173ee36cb40413669f87feaee104f92d8712016a9961d37de72","location":{"lines":{"begin":{"column":7,"line":282},"end":{"column":30,"line":282}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"0dc39f93941cad596bb609a214e4dcb0110afc60e1fd9acfaa792c7de48ee77c","location":{"lines":{"begin":{"column":10,"line":331},"end":{"column":36,"line":331}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"c8084f9efc970145e5578c33354eec20cce780e3614294d1edad2ecf4d5bf834","location":{"lines":{"begin":{"column":10,"line":391},"end":{"column":42,"line":391}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"bcca2acc0cae2bb81213072149e8def67a3a88b02f3cd3b7e86a8c01d2491e3e","location":{"lines":{"begin":{"column":10,"line":430},"end":{"column":36,"line":430}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"be9d83bc0599e5b4b8748f51c5bf691fcfe61c56db1784a3957464de65de531a","location":{"lines":{"begin":{"column":10,"line":476},"end":{"column":33,"line":476}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"api-prefix","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bDISPATCH_[A-Za-z0-9_]+\\b'"},"description":"Fichier d'API contenant une fonction sans préfixe","fingerprint":"616d185229ab09bfcba134e551ad9beceb83f63b87a26d2315e8d30474249f80","location":{"lines":{"begin":{"column":10,"line":508},"end":{"column":45,"line":508}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/dispatch/proc_instance_dispatch/i_instance/source/disi_api_ssyst.c"},"severity":"minor","type":"issue"} diff --git a/testdata/reports/codeparser-gesmaj.json b/testdata/reports/codeparser-gesmaj.json deleted file mode 100644 index 8235a96..0000000 --- a/testdata/reports/codeparser-gesmaj.json +++ /dev/null @@ -1,324 +0,0 @@ -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cf7bf31d12141ba88ba7bb8cbcc5b003f851a1c37571cc3818ee929fde0f3df4","location":{"lines":{"begin":{"column":43,"line":29},"end":{"column":54,"line":29}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/include/majc_priv.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bMAJC_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"22148c53f19640556e49fdeaa1b749e8454908ba02c2fff2770cf8c1962cb660","location":{"lines":{"begin":{"column":9,"line":29},"end":{"column":28,"line":29}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/include/majc_priv.h"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"30fc08c4d095ee3c4c1f42107206da8024dc4e0ce46fafedff1e0ca89d38ca7d","location":{"lines":{"begin":{"column":6,"line":86},"end":{"column":23,"line":86}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_ind.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":90},"end":{"column":22,"line":90}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_ind.c"}],"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"5f93f33e43b7d4b79b3e93656fea87ebc11f9c5fd418892f782af98b252b70f0","location":{"lines":{"begin":{"column":3,"line":53},"end":{"column":26,"line":53}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_ind.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"3c686b975c3d04af4f3d4644fc91010ee27fff82ca7406ebf2f26fd0b5029590","location":{"lines":{"begin":{"column":12,"line":97},"end":{"column":21,"line":97}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maj_gesmaj_cst.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"6e202dfcac12f0fd1083da7506545ba420600b896cbeddf148ba58d4504fed59","location":{"lines":{"begin":{"column":12,"line":98},"end":{"column":21,"line":98}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maj_gesmaj_cst.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"24f7f3db8b6d01a20a4277c9fa95f86944d52e8ff2a3474e23cca1aec5e67c0c","location":{"lines":{"begin":{"column":12,"line":99},"end":{"column":25,"line":99}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maj_gesmaj_cst.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"39b47679f12ff33650e5571ef687dd2288f94849a0f73bbbb42747d3c5c35e58","location":{"lines":{"begin":{"column":12,"line":100},"end":{"column":21,"line":100}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maj_gesmaj_cst.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'MAJ_b_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"67e7ac152010c586893db224abdc9486a0fb40b088959337bc63a9627b4a8fc9","location":{"lines":{"begin":{"column":18,"line":46},"end":{"column":26,"line":46}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maj_gesmaj_var.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]i32_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"bedf8d989f303dbf65ba5842a865be017db63de640a9e5e76771eb6f40953184","location":{"lines":{"begin":{"column":46,"line":47},"end":{"column":60,"line":47}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majc.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"a020c55b144b56c12798e540d941a2abc56a5c633300c03e2f43c2e15f0c3f4a","location":{"lines":{"begin":{"column":52,"line":50},"end":{"column":63,"line":50}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majc.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bMAJ[A-Z]{1,2}_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"f934886853e96b6f750b742c0a5bf980d57342dc5976552421f289ed7f038868","location":{"lines":{"begin":{"column":7,"line":49},"end":{"column":45,"line":49}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majb.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bMAJ[A-Z]{1,2}_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"420f7aa0e1ab5ff8d9f7c29bed291070007a3dc93b917818a9ec104a2bdef293","location":{"lines":{"begin":{"column":7,"line":52},"end":{"column":44,"line":52}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majb.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bMAJ[A-Z]{1,2}_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"0c02af2fcf078d28258fd0dc2f6bf43227326880b4d50d0a9d9952b3a327aa10","location":{"lines":{"begin":{"column":7,"line":56},"end":{"column":34,"line":56}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majb.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bMAJ[A-Z]{1,2}_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"30f7540108ec001ab9988671bc91d5be6f5ac1a4b6d3daf6be7f1439bbfc8d96","location":{"lines":{"begin":{"column":7,"line":60},"end":{"column":35,"line":60}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majb.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"653043d8ba774f7e22c3135e040d605def04afa0d1ccdd18b636fb278a77703b","location":{"lines":{"begin":{"column":44,"line":41},"end":{"column":53,"line":41}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majr.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f0eac081eb554ce9094ccdad90194fca4e2595444eca8968d57fa861476003c7","location":{"lines":{"begin":{"column":57,"line":47},"end":{"column":64,"line":47}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majm.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"a76f436f635fdc48ddbe66124acad649b3150106d26d6f4f1e6f164df526983a","location":{"lines":{"begin":{"column":50,"line":54},"end":{"column":57,"line":54}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majm.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ad818c976eb9ce754df06795d02339cf975d0f61cd7a1f513b4c1ad6bd87cddb","location":{"lines":{"begin":{"column":65,"line":45},"end":{"column":72,"line":45}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/majs.h"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Balise attendue: MASQUE_DOXYGEN_PRIVE"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"df4cccdb36760973160afd0ac3fb2c11c9275d269f07ad83be0157c8deb327f4","location":{"lines":{"begin":{"column":9,"line":1},"end":{"column":31,"line":1}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/source/maj_gesmaj_decla.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"096e4cec109b384ab7d41f1724f476d92fc3016f33d7e5eed8ccb9c45af8a140","location":{"lines":{"begin":{"column":51,"line":36},"end":{"column":62,"line":36}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maju.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"7f6f3202ddd407b2ffecd96bc0b29feb80a9d6c071f9be44d5af6b2b34287bd5","location":{"lines":{"begin":{"column":51,"line":39},"end":{"column":61,"line":39}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maju.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"45acf89424f5e3f47df67ebcc7c96e65cc788b0333f9a9f02e2476e8ef1f119a","location":{"lines":{"begin":{"column":50,"line":43},"end":{"column":61,"line":43}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maju.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]ui32_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"5c944213006be7bb5b72f9e6d4eed3433d4f0616478368f4f67c87f2c4d65a32","location":{"lines":{"begin":{"column":72,"line":47},"end":{"column":87,"line":47}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/commun/include/maju.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bMAJM_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"53fc2e65ee3fdc57ab23fb5b93ca19697abcc611502e8c8a240e0777aea92733","location":{"lines":{"begin":{"column":7,"line":36},"end":{"column":21,"line":36}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/include/majm_priv.h"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"0988db4d503add3b56a5e61347d998a6097e2e21f1911b9020ad12a60c324976","location":{"lines":{"begin":{"column":32,"line":139},"end":{"column":74,"line":139}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"314a81e768a5b6e9d54a7ff0f804ef9cf6579af056ab5faf37b887f3bfc33940","location":{"lines":{"begin":{"column":32,"line":354},"end":{"column":71,"line":354}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"7d84bcc320b23aceb3a68587eca5c663da54fa1d79c0e3ab27e6c447cf29ce12","location":{"lines":{"begin":{"column":32,"line":139},"end":{"column":74,"line":139}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"a8b70d90adc729733aff98a7a915f62628556bcf4046efc47b7dac68473dc5dc","location":{"lines":{"begin":{"column":32,"line":354},"end":{"column":71,"line":354}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"critical","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"eeb26b5d9d615c5b93e761f0f45cf0e019d2838e45db7d73ff3ff53b4116f06a","location":{"lines":{"begin":{"column":3,"line":124},"end":{"column":26,"line":124}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"eeb26b5d9d615c5b93e761f0f45cf0e019d2838e45db7d73ff3ff53b4116f06a","location":{"lines":{"begin":{"column":3,"line":125},"end":{"column":26,"line":125}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"eeb26b5d9d615c5b93e761f0f45cf0e019d2838e45db7d73ff3ff53b4116f06a","location":{"lines":{"begin":{"column":3,"line":203},"end":{"column":26,"line":203}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"eeb26b5d9d615c5b93e761f0f45cf0e019d2838e45db7d73ff3ff53b4116f06a","location":{"lines":{"begin":{"column":5,"line":207},"end":{"column":28,"line":207}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]i32_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"a6c1a87d0c2952b700e11d7bcadeeb41a72161860ac1edd1a3b9e708bffdc343","location":{"lines":{"begin":{"column":46,"line":113},"end":{"column":60,"line":113}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"3b9340a466ae2572d9ef40eaa22453796b89a777b95bc75fae947631fd7a0894","location":{"lines":{"begin":{"column":11,"line":121},"end":{"column":28,"line":121}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b0d33080a342c15c89c66d7998576e44c9fff0b52fe5401c069a39e3463cd6c8","location":{"lines":{"begin":{"column":20,"line":193},"end":{"column":59,"line":193}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i32_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"1930e432e2a6adbb9de212870bb551260c716aa5a4d70ea54d0f618f8ff854bc","location":{"lines":{"begin":{"column":20,"line":194},"end":{"column":32,"line":194}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/c_decompresseur/source/majc.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"84556480cf57495ed751e58592390765fc2b13972f1d623377eee8c9a0b50a45","location":{"lines":{"begin":{"column":11,"line":66},"end":{"column":23,"line":66}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_main.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"a43f14cda3b77a1e8c2c55bb95c2f3d815e9443c7e62efdf0ae9d53552884d2f","location":{"lines":{"begin":{"column":30,"line":275},"end":{"column":63,"line":275}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"f78d708095ce17d5175b6a19f9b2d4ba88afe57fdc0f6ca45da5b4f53b1978ef","location":{"lines":{"begin":{"column":30,"line":341},"end":{"column":61,"line":341}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"781f25351b8de3e47a4942856dc354fa5a4bb1a4aec8d2ac303e5e19c1dece03","location":{"lines":{"begin":{"column":32,"line":410},"end":{"column":62,"line":410}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"781f25351b8de3e47a4942856dc354fa5a4bb1a4aec8d2ac303e5e19c1dece03","location":{"lines":{"begin":{"column":32,"line":419},"end":{"column":62,"line":419}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"6457171697ccba62a0bb6cf4adf08ae4e81776a7943190324977d5554b980608","location":{"lines":{"begin":{"column":30,"line":482},"end":{"column":58,"line":482}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"16437d8ae6a1079fcc5d8d287efd3d7a5efa1c8837305d2c1576d0f5c17c054e","location":{"lines":{"begin":{"column":67,"line":70},"end":{"column":72,"line":70}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"9a44d9c90799dd486372686874090d5e26b5825a26c55ebe61d533244aba8721","location":{"lines":{"begin":{"column":73,"line":79},"end":{"column":80,"line":79}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"905221057d0a7988e27f1547dd9a51c64b1159d58f31098c46b8a098fff049b2","location":{"lines":{"begin":{"column":73,"line":80},"end":{"column":81,"line":80}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'ui_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb0912a7ecf9d35c9891aca404b2aef12e3a6d2440a18a341044598c3776a54b","location":{"lines":{"begin":{"column":59,"line":83},"end":{"column":76,"line":83}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"9a44d9c90799dd486372686874090d5e26b5825a26c55ebe61d533244aba8721","location":{"lines":{"begin":{"column":72,"line":90},"end":{"column":79,"line":90}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"905221057d0a7988e27f1547dd9a51c64b1159d58f31098c46b8a098fff049b2","location":{"lines":{"begin":{"column":72,"line":91},"end":{"column":80,"line":91}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"9a44d9c90799dd486372686874090d5e26b5825a26c55ebe61d533244aba8721","location":{"lines":{"begin":{"column":69,"line":99},"end":{"column":76,"line":99}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"905221057d0a7988e27f1547dd9a51c64b1159d58f31098c46b8a098fff049b2","location":{"lines":{"begin":{"column":69,"line":100},"end":{"column":77,"line":100}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"9a44d9c90799dd486372686874090d5e26b5825a26c55ebe61d533244aba8721","location":{"lines":{"begin":{"column":68,"line":109},"end":{"column":75,"line":109}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"905221057d0a7988e27f1547dd9a51c64b1159d58f31098c46b8a098fff049b2","location":{"lines":{"begin":{"column":68,"line":110},"end":{"column":76,"line":110}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"16437d8ae6a1079fcc5d8d287efd3d7a5efa1c8837305d2c1576d0f5c17c054e","location":{"lines":{"begin":{"column":67,"line":148},"end":{"column":72,"line":148}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'ui_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb0912a7ecf9d35c9891aca404b2aef12e3a6d2440a18a341044598c3776a54b","location":{"lines":{"begin":{"column":59,"line":265},"end":{"column":76,"line":265}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/b_bus/source/majb_dbus_sofcom.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"57bbc391e10e0a7e048e9dae60ac76f189b7bad77b1aaa6f1111b8febada8edf","location":{"lines":{"begin":{"column":55,"line":46},"end":{"column":66,"line":46}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/include/majr_priv.h"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\bMAJR_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"347d72b4168e4f782e3a314441115b18b1c625c760359f405c9945e855c0ab92","location":{"lines":{"begin":{"column":6,"line":52},"end":{"column":26,"line":52}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/include/majr_priv.h"},"severity":"major","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"e51c35e85d94058b82bd757a64fec5a2cf405709964f87f2d5c8d5b111a18979","location":{"lines":{"begin":{"column":3,"line":118},"end":{"column":26,"line":118}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_finaliserMAJ.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"e51c35e85d94058b82bd757a64fec5a2cf405709964f87f2d5c8d5b111a18979","location":{"lines":{"begin":{"column":3,"line":119},"end":{"column":26,"line":119}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_finaliserMAJ.c"},"severity":"minor","type":"issue"} -{"categories":["expr"],"check_name":"file-descriptor-zero-op","content":{"body":""},"description":"Affectation ou comparaison d'un file descriptor à zéro","fingerprint":"0e5511aa66569e2f0f3117b8a5ad31844e52edce243e86492424a58801014f2d","location":{"lines":{"begin":{"column":18,"line":155},"end":{"column":19,"line":155}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_finaliserMAJ.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"b5a77c604671ab4557e54e4711606eeb543ff64eb12787715f9674565d3206bc","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/machineEtat.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"61aa8ee428672476149cbfd9251bbff8072e170a8d4bc7628c30abecd022f18b","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_ControlerContenuArchive.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b9fb750c074712a389b2029ebcea96a64d39b86b00c9a0a3dcb722e1988dcbb1","location":{"lines":{"begin":{"column":14,"line":5},"end":{"column":17,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_ControlerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4c4ed5e0f850ae3ee90e57956c48b07badb2e33407c890f76c353f485ba220f1","location":{"lines":{"begin":{"column":26,"line":5},"end":{"column":31,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_ControlerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4ee11a3ce010b90b13659d4391af7588cba9b79f3076fe595366e417471b55c6","location":{"lines":{"begin":{"column":7,"line":7},"end":{"column":7,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_ControlerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63daa90ff33c98c1294b156679c5d19688ba4f103f10627885b5845f5bfc567f","location":{"lines":{"begin":{"column":10,"line":7},"end":{"column":12,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_ControlerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'gb_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"98e248381d33a828d158b520c9fa0cb6caecb2b5514b91c2d0f2e31bd05cf376","location":{"lines":{"begin":{"column":12,"line":9},"end":{"column":17,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_ControlerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"6afbd4b879fcd0e7832031ece8a3324cbf2ec31db4e0d4f68e9859f501d0c4e9","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_EspaceLibrePartition.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ccfd5bfb97dad1fba5c55eaf9aa1e5c6a247c7f98d91718a4beafcd728c80591","location":{"lines":{"begin":{"column":14,"line":5},"end":{"column":17,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_EspaceLibrePartition.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"23cd8ce37c1aba929bd7e221ed32d480647543c1b7437d825e0b865ed79527a2","location":{"lines":{"begin":{"column":32,"line":5},"end":{"column":37,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_EspaceLibrePartition.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"e2ba20b2712b312403ed4735d2f771b1c88668af4b9a6437d64e9f51b71a08e9","location":{"lines":{"begin":{"column":12,"line":9},"end":{"column":12,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_EspaceLibrePartition.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"559893dc2d000f5e729127b176a92b5488941bcaeb7bdae619e23c613f9244de","location":{"lines":{"begin":{"column":15,"line":9},"end":{"column":20,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_EspaceLibrePartition.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"1151c9fdae756de2a2b8bfa1fc3f7670f56c4373d35dfd15bf7739b342e77061","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_InstallerImages.c"},"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"eb069ea32e857f11c8ebfdb451625d0b6436393685b2d9d40277b2ca6dabb007","location":{"lines":{"begin":{"column":6,"line":221},"end":{"column":29,"line":221}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":228},"end":{"column":26,"line":228}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"}],"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"1cbd350db08b0431a5d8e3fa8278e4998bb13bec64ba690311128424bfdea1cf","location":{"lines":{"begin":{"column":35,"line":200},"end":{"column":60,"line":200}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"cceef2b0f0ab4c55651b5bc980e81d7d27bf933622dd706d0c7e49735021d3ad","location":{"lines":{"begin":{"column":35,"line":200},"end":{"column":60,"line":200}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"severity":"critical","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8c77ecc05aa1f790efa75fa0dcecb1f0e84f425741a19f60ec505ceadec5d56b","location":{"lines":{"begin":{"column":3,"line":124},"end":{"column":27,"line":124}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8c77ecc05aa1f790efa75fa0dcecb1f0e84f425741a19f60ec505ceadec5d56b","location":{"lines":{"begin":{"column":3,"line":125},"end":{"column":27,"line":125}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8c77ecc05aa1f790efa75fa0dcecb1f0e84f425741a19f60ec505ceadec5d56b","location":{"lines":{"begin":{"column":3,"line":126},"end":{"column":27,"line":126}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8c77ecc05aa1f790efa75fa0dcecb1f0e84f425741a19f60ec505ceadec5d56b","location":{"lines":{"begin":{"column":3,"line":127},"end":{"column":27,"line":127}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'gb_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"6c430a60e91b68d9a725b254b7943caf6fb4cd0a2176469e339f68d478f6d47b","location":{"lines":{"begin":{"column":12,"line":120},"end":{"column":22,"line":120}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm_installerImages.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"fd4b428678d307d7e364435d2483179584f199d686748ea7d37b3c7ee282e06a","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_PreparationLienSymboliques.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"e9356708e56b435869d59f2efed8038206d0982d9e149daefe78f5ec101de40b","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_PubilierVersionLogicielle.c"},"severity":"minor","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"a644d0ce6900aa2b6f07cafe4e31a143d4ffb10406650558695c729188c6573e","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_checksum.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'e_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"87b7204472a52895e9a04fcb68e4106e3987f193c9f919c1f6e7a1e2ee01fa5f","location":{"lines":{"begin":{"column":20,"line":12},"end":{"column":30,"line":12}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_checksum.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"9dcbe1571692e26160445774b2ea80da7f6ea7e139612bcf7b500a1fc426d75f","location":{"lines":{"begin":{"column":7,"line":16},"end":{"column":12,"line":16}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_checksum.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"c3e8989717beccad27ee524c7619fe030227d1a5fcdd6a15bfc55af4670455c7","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_signature.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"77b4f69bccf221ef296a0e7b9dea1171eaf7b80f7fcce344ce48aeb0a4ec8dcc","location":{"lines":{"begin":{"column":14,"line":5},"end":{"column":17,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_signature.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"0a2ac405cb5a238b099626303953369f7499bdb05ab938e568100e24ccbd91fb","location":{"lines":{"begin":{"column":26,"line":5},"end":{"column":31,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_signature.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"3f530c573163b6205767f868a48e73591aad034a8f557e8e284110d35cf2bd26","location":{"lines":{"begin":{"column":7,"line":7},"end":{"column":7,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_signature.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"e6f95afe3ada1e433bae115734a05c3926747c67ee0e4fc03271e8f6c5e6e0a4","location":{"lines":{"begin":{"column":10,"line":7},"end":{"column":12,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_calculer_signature.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"72a972de7334c8523cd1fa8524619a2cf955e18de4ea1bcb58cc6daedb5e4a87","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"307c89ef03ccc470b3c20babaa45f6b6fd394194c5f0de4b38223cd4441863b6","location":{"lines":{"begin":{"column":14,"line":6},"end":{"column":17,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4b1ad439eef953ae00d034210a1d7f045dcc81047811d703a10bcdbf6f2b78e2","location":{"lines":{"begin":{"column":26,"line":6},"end":{"column":31,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cca067a0f6d80b4a2fed3a9d4818539fd21648bfc3eb172c62cd8e3388134910","location":{"lines":{"begin":{"column":20,"line":8},"end":{"column":20,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"549574ff9948ef761e83362c0e0b57ae621fa7094d5c1c7ee26e0755e6926450","location":{"lines":{"begin":{"column":23,"line":8},"end":{"column":25,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"e7e67b4e7ea36ce4cf0537cf2c9796b961a008463025b09d3ed5dcb7d182a041","location":{"lines":{"begin":{"column":20,"line":9},"end":{"column":26,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"07f45a867d6bf11433e22e8def4dbaaa926ae422c5d0bf0e9b1bd9380a0482c2","location":{"lines":{"begin":{"column":20,"line":10},"end":{"column":30,"line":10}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'e_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"9a4cc0e99008b8285787953148d9b4609a3b678f3a9a62b4371251149b1d7842","location":{"lines":{"begin":{"column":20,"line":11},"end":{"column":25,"line":11}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_decompresserFichier.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"b33fe1a7f348e9fe78b041300415166be1ada47380fb58b414f2e633ab2b62de","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_fabriquer_dossier_RDIFF.c"},"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"df92143e27868c54330194959b676855a7ad7100af5e37ec676ce894fdbd2e27","location":{"lines":{"begin":{"column":6,"line":183},"end":{"column":28,"line":183}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":185},"end":{"column":27,"line":185}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"}],"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"17f23e3d3b0bc302d6bdabbd7588a8ce033ade48d972139f4973267e0e75de82","location":{"lines":{"begin":{"column":27,"line":118},"end":{"column":57,"line":118}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"3249ec8464e4366d13ba6632d46f9dd86d72506d411ee77cc85fd61c3beae61b","location":{"lines":{"begin":{"column":34,"line":329},"end":{"column":76,"line":329}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"major","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"bfd12731a9e108d56e5ab75cccae00d1f9819e89df6d26b3e2260cdf0150d4dc","location":{"lines":{"begin":{"column":3,"line":321},"end":{"column":26,"line":321}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPINT"},"description":"Absence de commentaire avant un appel","fingerprint":"220b2e83f6e7b45d4aca08ab567b2af6659f590c2482c0bf6659847a8cef6818","location":{"lines":{"begin":{"column":7,"line":353},"end":{"column":25,"line":353}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_b_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"d4aa91e74a366a60049aa0b074bf5d9d060c7151c730b3403fd67b7c05fe9449","location":{"lines":{"begin":{"column":18,"line":81},"end":{"column":35,"line":81}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_b_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4bb6f6a807f33540cb84134e226860db050c5ed94748bc2ec3f10f0e13712dc5","location":{"lines":{"begin":{"column":18,"line":84},"end":{"column":31,"line":84}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_b_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ca1d4e1ca8f260620e0f45a80eb0e9264c99d64155ebea9046b9aa79dd9557f9","location":{"lines":{"begin":{"column":18,"line":87},"end":{"column":36,"line":87}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ef5d25ee3b0158960730fe31c58183bc2dca30f591155fb09c1dfd1b4ca41cc1","location":{"lines":{"begin":{"column":11,"line":153},"end":{"column":28,"line":153}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/d_demarrage/source/majd_fichier_priv.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"4d591cd049e4b9310896d02b521399bcf8c411fff801f525bb65b38f67e8a77b","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_obtenirVersionProduit.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b06b5cbf6b05ebfcfc7cefb1007d249316f53040a07578f079976fd206b72d1e","location":{"lines":{"begin":{"column":14,"line":6},"end":{"column":17,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_obtenirVersionProduit.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"fa0ffd6d6c1ccef936b2a8cf058c47fac86a0b712692470b7b82dc0676e93a1b","location":{"lines":{"begin":{"column":32,"line":6},"end":{"column":37,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_obtenirVersionProduit.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ac12e345ac129711adfac90babe27d7ec6879d1ededcafcc69769c97d978a971","location":{"lines":{"begin":{"column":9,"line":8},"end":{"column":14,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_obtenirVersionProduit.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b77aeb50c35bf8d31f5b7459eceb791c4b9003cf7608b85b0d6dfcd57df482d5","location":{"lines":{"begin":{"column":9,"line":9},"end":{"column":15,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_obtenirVersionProduit.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"9d82319aa7d4e674530beb7c6b65e6f8dfea7186276f02b111a716d4b56204fc","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_listerContenuArchive.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cbdefa91238f83a30d563a46e9e331bc5d8487ad4eb23f153de355738afeb77c","location":{"lines":{"begin":{"column":14,"line":6},"end":{"column":17,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_listerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"6ef909ab2c02088e2d77a1012658e4a37bd31ebf9d9bf698abd685e59b370178","location":{"lines":{"begin":{"column":26,"line":6},"end":{"column":31,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_listerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"17c12a01a5ba82ec3d15ec0a69b30496c328fc204ad174e506fe1dc5ecc08027","location":{"lines":{"begin":{"column":12,"line":8},"end":{"column":12,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_listerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"353f3fb19246adc6082db8f536103136a2b88774d428e1c437d3c1113159a9ac","location":{"lines":{"begin":{"column":15,"line":8},"end":{"column":17,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_listerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"fc52e4ffaecf1b27348a1574921f2905637a222c185ac779663eddd4b74180d0","location":{"lines":{"begin":{"column":20,"line":8},"end":{"column":20,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_listerContenuArchive.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"3c6ffad5783cc8b9ce8793c0a9bdf66ef10c73bb0a048e7e8f84cb0ce1c0363b","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_reconstituer_image.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f66a0df1c157cc3d2986c851f97c2e72f9fdf69e8ba1074df60042eb84aeb759","location":{"lines":{"begin":{"column":14,"line":6},"end":{"column":17,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_reconstituer_image.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"a8e9d3107018842f3c7359f84f050fb39a6e298e8f951f2c5ebba352ab26ff05","location":{"lines":{"begin":{"column":26,"line":6},"end":{"column":31,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_reconstituer_image.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"45561c5383769005c69422a8c722f0983d4c240b6879aa3a6203b25c19e1914b","location":{"lines":{"begin":{"column":9,"line":8},"end":{"column":9,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_reconstituer_image.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '(r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b1ec9c5df9c7b3c50c8f3ad4048de18594355a71e501ca35729c3ffe0f18c22f","location":{"lines":{"begin":{"column":9,"line":9},"end":{"column":11,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_reconstituer_image.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"26515a3b4d07cce1a02914a2237ef6eb2e8370601efc9528103d3a5d01198e7a","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_supprimer.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"3a1742d2822a607136db545fd66b81cb84715cc387a38cf8e68f78c43b020c6d","location":{"lines":{"begin":{"column":14,"line":6},"end":{"column":17,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_supprimer.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"237200489e5675a986f14ff0d89f376a6a488bf97fc53364d2a5ccb0f5882e71","location":{"lines":{"begin":{"column":32,"line":6},"end":{"column":37,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_supprimer.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"93422bc3346a7f60dd3ec25fb35bf966941a91ed95efcf4e212e962693a2cdcc","location":{"lines":{"begin":{"column":10,"line":8},"end":{"column":15,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_supprimer.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c66d1721598becb544f081d133cdbb9d24f90b69a6c9c7b05ab233237d57563f","location":{"lines":{"begin":{"column":10,"line":9},"end":{"column":10,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_supprimer.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"2930dd986cf88c493f868ec4cc59600b3a8160f942efa98a1a577e8e1ce9baae","location":{"lines":{"begin":{"column":10,"line":11},"end":{"column":16,"line":11}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_supprimer.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"d843c138dc6cc5a2cca15d16185ec9f9188d92354e497105f9c675c826e95978","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_validation_schema.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"e8ad5edf6cfb2962804641305e97d879a8980b4ddc8aea50fb49edbc4bd09d45","location":{"lines":{"begin":{"column":14,"line":4},"end":{"column":17,"line":4}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_validation_schema.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"8910f0006e020fa92bd207f388734b76f68f359ea7d0db6cfbd858ada9f256ae","location":{"lines":{"begin":{"column":32,"line":4},"end":{"column":37,"line":4}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_validation_schema.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'gb_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"59f1ff6453a8f3c4b226cda170b4fa0d464eaf04800b0c9ccc7d482e53357c88","location":{"lines":{"begin":{"column":12,"line":6},"end":{"column":19,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_validation_schema.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"1b8561e46927468a442416715ca0d674611502d9522a4c5e53e0fe476a630001","location":{"lines":{"begin":{"column":12,"line":7},"end":{"column":17,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_validation_schema.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"cd667fe8cc949d79238aaac8d99fca6d1135daf165f48660451fc5723656eb15","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierAuthenticiteImage.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"3c5d8266dcfb3df683da945e44c0eed8cb54756802de54f778a75df7bd08e148","location":{"lines":{"begin":{"column":14,"line":5},"end":{"column":17,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierAuthenticiteImage.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"49e117854a2e29adac425ff0e207d8efb61f03a7815312d1412caaf9f646bf4b","location":{"lines":{"begin":{"column":32,"line":5},"end":{"column":37,"line":5}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierAuthenticiteImage.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c7ca5bb945a39b39cf6eb0976eb949b84498b37a59804db7f84eacf2739cb38f","location":{"lines":{"begin":{"column":7,"line":7},"end":{"column":12,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierAuthenticiteImage.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"412a4da0859384f7e5b2a47f77981532e7b5bc745adf3c8357a522c160296e69","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierDossier.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"672f4130e80f9e5d0f5e7ac59676e56f3c57e72df23babc959d992b5528518cd","location":{"lines":{"begin":{"column":14,"line":7},"end":{"column":17,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierDossier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b47f37014ff729fc4e705aca5196c2be20693ca3d12dca50ed8b2c85d692ef4c","location":{"lines":{"begin":{"column":32,"line":7},"end":{"column":37,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierDossier.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"03165776a328eec2dcf2abe4e7169689ca4135eb20a443d10939dcece7abf283","location":{"lines":{"begin":{"column":7,"line":9},"end":{"column":12,"line":9}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierDossier.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"52be0f4276a7b24913447acb3ab93dba9db889598d92beb485e0ced50fe8c648","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierSignatureFichierManifest.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ed5af059a1460a0b7c7a53b897fe2958f50186246493befe49f93906e37dd163","location":{"lines":{"begin":{"column":14,"line":4},"end":{"column":17,"line":4}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierSignatureFichierManifest.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap][ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b1edfb81d4c8bdcd7fd90e27dab5770cb73af5332740f26901d343790014e2e2","location":{"lines":{"begin":{"column":32,"line":4},"end":{"column":37,"line":4}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierSignatureFichierManifest.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'gb_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"17aab5af56d4da6d9546dad6fae338a19e255145216043a36629d99652caf74b","location":{"lines":{"begin":{"column":12,"line":6},"end":{"column":19,"line":6}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierSignatureFichierManifest.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"023d698c17873ab8540136c8b669de435e2da08855550746c5dfb9e553bf3eca","location":{"lines":{"begin":{"column":12,"line":7},"end":{"column":17,"line":7}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifierSignatureFichierManifest.c"},"severity":"major","type":"issue"} -{"categories":["general"],"check_name":"internal-marker","content":{"body":"Le nom de fichier ne correspond pas au nommage '.*_api_ssyst"},"description":"Condition de portée interne ou externe du fichier incorrecte","fingerprint":"39a030f7a8a889c25849f6c508760ef1dc8ba27ea0f9b755e18de34c69b05c86","location":{"lines":{"begin":{"column":0,"line":0},"end":{"column":0,"line":0}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifier_dossier_RDIFF.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'gb_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"9bc63a46c87c9711884fabcbe9038a95170207beb78e65a555ec74443dddef09","location":{"lines":{"begin":{"column":12,"line":8},"end":{"column":14,"line":8}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/tests/maj_test_verifier_dossier_RDIFF.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"698979cd45d3b55d980e2887034fa30de81f1b71115bca77d708bf35393bde31","location":{"lines":{"begin":{"column":17,"line":131},"end":{"column":24,"line":131}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ce09fdf759eb8840c67d39148f7f2f95728b93fe7f50661e9a73ad6c91265e0c","location":{"lines":{"begin":{"column":35,"line":137},"end":{"column":44,"line":137}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"77bdfae0ebaaac7bb839673d4fea6366e0924061d2cff101306ef1dfc308089a","location":{"lines":{"begin":{"column":35,"line":139},"end":{"column":50,"line":139}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63e3c113451720053f2cf1ecd66e8995c61b2e04bc2b605e3bbcec82230d2492","location":{"lines":{"begin":{"column":72,"line":153},"end":{"column":79,"line":153}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63e3c113451720053f2cf1ecd66e8995c61b2e04bc2b605e3bbcec82230d2492","location":{"lines":{"begin":{"column":66,"line":157},"end":{"column":73,"line":157}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63e3c113451720053f2cf1ecd66e8995c61b2e04bc2b605e3bbcec82230d2492","location":{"lines":{"begin":{"column":73,"line":160},"end":{"column":80,"line":160}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63e3c113451720053f2cf1ecd66e8995c61b2e04bc2b605e3bbcec82230d2492","location":{"lines":{"begin":{"column":65,"line":164},"end":{"column":72,"line":164}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63e3c113451720053f2cf1ecd66e8995c61b2e04bc2b605e3bbcec82230d2492","location":{"lines":{"begin":{"column":76,"line":169},"end":{"column":83,"line":169}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63e3c113451720053f2cf1ecd66e8995c61b2e04bc2b605e3bbcec82230d2492","location":{"lines":{"begin":{"column":60,"line":173},"end":{"column":67,"line":173}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"63e3c113451720053f2cf1ecd66e8995c61b2e04bc2b605e3bbcec82230d2492","location":{"lines":{"begin":{"column":70,"line":176},"end":{"column":77,"line":176}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"d0507140a91232f8a4c823541c5f6690b9786ba26d36180ebb4018ae8b5dfc68","location":{"lines":{"begin":{"column":41,"line":207},"end":{"column":62,"line":207}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"143f78a27e58c4a241a78ea26d714ff6bf6bb7c149f4dd4d62d1d9da33ff6829","location":{"lines":{"begin":{"column":41,"line":208},"end":{"column":63,"line":208}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"87ef6bac8812e947641e55f6ca7f0c6f6fe5a75deda08609128c4e6ff60266e6","location":{"lines":{"begin":{"column":41,"line":209},"end":{"column":67,"line":209}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f34630f4db8869e0359ff3ffc01b5cc2d4b0aec71f8612c68821dd54eb9d9f87","location":{"lines":{"begin":{"column":41,"line":210},"end":{"column":64,"line":210}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"6900b2e5fff0b8f8172734b651f27517cdb8e80541551e3fd76f93cd80824635","location":{"lines":{"begin":{"column":41,"line":211},"end":{"column":67,"line":211}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"d562fa913a25254f9e36aca2e4f533fb6b0e698afc8e8ae43503fbf2aeea65e9","location":{"lines":{"begin":{"column":41,"line":212},"end":{"column":70,"line":212}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"5f1a97b325be4ecba94c59f4b0c88a34c20cf280407d53bf27939b419f4d349c","location":{"lines":{"begin":{"column":41,"line":213},"end":{"column":58,"line":213}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"907f318527daca11cac4e58c3d1786b30e20065a1881286703fcb0b8efc3da3b","location":{"lines":{"begin":{"column":38,"line":216},"end":{"column":70,"line":216}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"439d2df9c7872ccfc57221ff02ee51920a0eb2e48dd789fa5f2d572505630897","location":{"lines":{"begin":{"column":41,"line":252},"end":{"column":56,"line":252}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"d0507140a91232f8a4c823541c5f6690b9786ba26d36180ebb4018ae8b5dfc68","location":{"lines":{"begin":{"column":41,"line":274},"end":{"column":62,"line":274}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"143f78a27e58c4a241a78ea26d714ff6bf6bb7c149f4dd4d62d1d9da33ff6829","location":{"lines":{"begin":{"column":41,"line":284},"end":{"column":63,"line":284}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"87ef6bac8812e947641e55f6ca7f0c6f6fe5a75deda08609128c4e6ff60266e6","location":{"lines":{"begin":{"column":41,"line":295},"end":{"column":67,"line":295}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f34630f4db8869e0359ff3ffc01b5cc2d4b0aec71f8612c68821dd54eb9d9f87","location":{"lines":{"begin":{"column":41,"line":306},"end":{"column":64,"line":306}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"6900b2e5fff0b8f8172734b651f27517cdb8e80541551e3fd76f93cd80824635","location":{"lines":{"begin":{"column":41,"line":321},"end":{"column":67,"line":321}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"d562fa913a25254f9e36aca2e4f533fb6b0e698afc8e8ae43503fbf2aeea65e9","location":{"lines":{"begin":{"column":41,"line":336},"end":{"column":70,"line":336}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_c[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"5f1a97b325be4ecba94c59f4b0c88a34c20cf280407d53bf27939b419f4d349c","location":{"lines":{"begin":{"column":41,"line":351},"end":{"column":58,"line":351}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_cr_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"4d26cccc84beba75b48d749c4ea13738903399be4aec4b81caa46f69ac8d336a","location":{"lines":{"begin":{"column":33,"line":359},"end":{"column":49,"line":359}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 't_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"85ae181bf77748ed012dfdc50c24a5b130e578c90d17ad1e1698f53dd443e1fc","location":{"lines":{"begin":{"column":23,"line":444},"end":{"column":35,"line":444}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 't_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"85ae181bf77748ed012dfdc50c24a5b130e578c90d17ad1e1698f53dd443e1fc","location":{"lines":{"begin":{"column":23,"line":520},"end":{"column":35,"line":520}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 't_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"85ae181bf77748ed012dfdc50c24a5b130e578c90d17ad1e1698f53dd443e1fc","location":{"lines":{"begin":{"column":23,"line":562},"end":{"column":35,"line":562}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 't_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"85ae181bf77748ed012dfdc50c24a5b130e578c90d17ad1e1698f53dd443e1fc","location":{"lines":{"begin":{"column":23,"line":609},"end":{"column":35,"line":609}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 't_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"85ae181bf77748ed012dfdc50c24a5b130e578c90d17ad1e1698f53dd443e1fc","location":{"lines":{"begin":{"column":23,"line":650},"end":{"column":35,"line":650}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"952ea5cf27eac5eeb09fd41bc7d5e2442c08076ed2eba868ccc89914f67cbe80","location":{"lines":{"begin":{"column":31,"line":668},"end":{"column":49,"line":668}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 't_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"85ae181bf77748ed012dfdc50c24a5b130e578c90d17ad1e1698f53dd443e1fc","location":{"lines":{"begin":{"column":31,"line":682},"end":{"column":43,"line":682}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"952ea5cf27eac5eeb09fd41bc7d5e2442c08076ed2eba868ccc89914f67cbe80","location":{"lines":{"begin":{"column":31,"line":683},"end":{"column":49,"line":683}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"952ea5cf27eac5eeb09fd41bc7d5e2442c08076ed2eba868ccc89914f67cbe80","location":{"lines":{"begin":{"column":31,"line":746},"end":{"column":49,"line":746}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"952ea5cf27eac5eeb09fd41bc7d5e2442c08076ed2eba868ccc89914f67cbe80","location":{"lines":{"begin":{"column":31,"line":763},"end":{"column":49,"line":763}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"bdf5a4d361666e0bbc7d24611edefe938f538f2ef66bde5c5acea85766444d47","location":{"lines":{"begin":{"column":26,"line":126},"end":{"column":33,"line":126}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"c415045f848567c2109258ed41833cb6c270c8f53fc00813bd192d23f1e77f1a","location":{"lines":{"begin":{"column":26,"line":127},"end":{"column":38,"line":127}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"6c5d156472ac39085f46eea2d01b67d770b1577bb3cd272ed4449cb1a30f683f","location":{"lines":{"begin":{"column":12,"line":130},"end":{"column":29,"line":130}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"1a3aa85bd4bfe425b606f5605974154997b643eec29f05df2fb26690fcc685d8","location":{"lines":{"begin":{"column":17,"line":131},"end":{"column":24,"line":131}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"1d350407dc5b194a5c1e040b6f22567b49dd307d07a35a97d6fff66c64246400","location":{"lines":{"begin":{"column":13,"line":132},"end":{"column":32,"line":132}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"4b8ac7f9e69e234f22a957bbad341986eb64109154383893f813182021c2efbe","location":{"lines":{"begin":{"column":20,"line":151},"end":{"column":36,"line":151}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"008bc90585cdd7e381904f5091f9578bb7d054a3471ddef107f9277e0e82b49c","location":{"lines":{"begin":{"column":1,"line":155},"end":{"column":30,"line":155}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"af0af97d460547199333cf8284fe292ccced35dcdcc7796ec8fb036bc8c52380","location":{"lines":{"begin":{"column":20,"line":158},"end":{"column":37,"line":158}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"a9d1fd549ca57057f527744bc9d02b755c066a7a5d5bc4d0be7548ba2e72544f","location":{"lines":{"begin":{"column":1,"line":162},"end":{"column":29,"line":162}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"f8d777860361f8f1332f6648e74b8f71d86bc79131d3e87ade61b6dfb6146ac3","location":{"lines":{"begin":{"column":20,"line":167},"end":{"column":40,"line":167}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"95fffb2eca078c3f572c5d54f83463be4589e5603f34451f309dcb3bd07917e6","location":{"lines":{"begin":{"column":1,"line":171},"end":{"column":24,"line":171}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b_[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"abf9fa3ce7752d119fe8d0b72c316508e5138da1d31220097431412759804aaf","location":{"lines":{"begin":{"column":20,"line":174},"end":{"column":34,"line":174}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/s_etats/source/majs.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"9bef43fe99835b41914190c10d66b54b84e2a3d9ab109d8eda461dcfb297e903","location":{"lines":{"begin":{"column":6,"line":172},"end":{"column":38,"line":172}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx_xml_traces.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":174},"end":{"column":37,"line":174}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx_xml_traces.c"}],"severity":"minor","type":"issue"} -{"categories":["expr"],"check_name":"file-descriptor-zero-op","content":{"body":""},"description":"Affectation ou comparaison d'un file descriptor à zéro","fingerprint":"afa0c0810783867a1b72d7dc9f806df989c79d399b4410826cc6ac13b771f788","location":{"lines":{"begin":{"column":28,"line":66},"end":{"column":28,"line":66}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx_xml_traces.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"78dc57d9cf7a46828f8c079f759797ca7fd709d2a1855b4e32ba655ba9109c5f","location":{"lines":{"begin":{"column":14,"line":25},"end":{"column":38,"line":25}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx_xml_traces.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'z_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"0f0af7dd41b34e11bec5d3696ee992a6f13cb00162ad38159b100696a3d291ad","location":{"lines":{"begin":{"column":38,"line":41},"end":{"column":45,"line":41}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx_xml_traces.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"2c0079ccd4eacf6bdd2cec7f46e22c8d3fca7e5278e742eb574183b9d14612c8","location":{"lines":{"begin":{"column":40,"line":345},"end":{"column":49,"line":345}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"d393b75a723c65a56a3e94a9c1df48a2495122c0a4a07defac7f9265d6aaea79","location":{"lines":{"begin":{"column":31,"line":730},"end":{"column":56,"line":730}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"34ef539f1df5ae3bdba497a261cd0888d531fcc30632194d068a523eea6b1f1c","location":{"lines":{"begin":{"column":40,"line":345},"end":{"column":49,"line":345}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"7d13fcd10fc9572f378da510e7c4f1451f3a703d1bd19daf29b0490adc2544f4","location":{"lines":{"begin":{"column":31,"line":730},"end":{"column":56,"line":730}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"alloc-magic-number","content":{"body":""},"description":"Appel d'une allocation mémoire avec un nombre magique","fingerprint":"2983308a6c7736ac29f3e8c8c82d877460e379f7233ea99e72fcd4deda71c7f0","location":{"lines":{"begin":{"column":47,"line":345},"end":{"column":48,"line":345}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"ec231a0f1a898c376ec307946e0cd51f15ed855ceb4ce9267c125f2df27646f5","location":{"lines":{"begin":{"column":31,"line":119},"end":{"column":76,"line":119}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"c2c03192ea92d96c99fd338c56b02577cf88458861d00a6d055256368deef70f","location":{"lines":{"begin":{"column":31,"line":120},"end":{"column":77,"line":120}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"a1fd183b42bb52d0825dc707312e97a7433fa2ec37d23fd7389e30a910847142","location":{"lines":{"begin":{"column":36,"line":183},"end":{"column":85,"line":183}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"39a11da3696e439457ffa55420d6dd86c75bb2ccef1c1212683b6266fb8dd66e","location":{"lines":{"begin":{"column":34,"line":195},"end":{"column":82,"line":195}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"e93e8b1492c1f6d141a56ad101212787eb4a15e792e4da180ae35dbf6785e1a0","location":{"lines":{"begin":{"column":34,"line":196},"end":{"column":75,"line":196}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"39a11da3696e439457ffa55420d6dd86c75bb2ccef1c1212683b6266fb8dd66e","location":{"lines":{"begin":{"column":32,"line":210},"end":{"column":80,"line":210}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"e93e8b1492c1f6d141a56ad101212787eb4a15e792e4da180ae35dbf6785e1a0","location":{"lines":{"begin":{"column":32,"line":211},"end":{"column":73,"line":211}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"55baafcf599b1fe64ebfc6cd74214eb975b0d347e7ffbacf5ea0b06613d239af","location":{"lines":{"begin":{"column":21,"line":297},"end":{"column":71,"line":297}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"7da846f34e39283f50630e104d6ad50339587ee5a4aecc3a11bca9da9d4dcc58","location":{"lines":{"begin":{"column":38,"line":479},"end":{"column":79,"line":479}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"1b54ce3ddf57568c30b14ed40edda908f9f57748661807b8c1ea053a330c6c10","location":{"lines":{"begin":{"column":38,"line":480},"end":{"column":62,"line":480}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"445a609a63543abd5b3e8fa03a00d16d8c0c103bfe4d1a5cad84d5e955e1e9b4","location":{"lines":{"begin":{"column":38,"line":481},"end":{"column":63,"line":481}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"9f9d095e71fcef1c5791c57c6d89b11d3c7b05bd3d552f702dd151102230442e","location":{"lines":{"begin":{"column":40,"line":490},"end":{"column":85,"line":490}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"eb598f94b9eb223b470505e4e36743fd1ec0eb23f2abfc91956ae5e4b99863cc","location":{"lines":{"begin":{"column":32,"line":531},"end":{"column":69,"line":531}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"6205405a633d20a17a8279b658ef3b93400a1bcc4606dc69e0feb2183bb7fe52","location":{"lines":{"begin":{"column":32,"line":532},"end":{"column":72,"line":532}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"1a4cfb16804d5611ee57051be9617fbacfea63daffead5f4e115273691ade318","location":{"lines":{"begin":{"column":38,"line":559},"end":{"column":87,"line":559}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"5bc3db66c613f97444e8a84ff0a93aadf09583e87f1e04fd711bfe38f234ba0e","location":{"lines":{"begin":{"column":40,"line":605},"end":{"column":83,"line":605}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"forbidden-line-return-arg","content":{"body":""},"description":"Chaine de caractère contenant un saut de ligne","fingerprint":"560230c3e0eaf79b7deac5e26a845fa83d55bf8b27b8d1ecd990044789d7f2c1","location":{"lines":{"begin":{"column":17,"line":617},"end":{"column":78,"line":617}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_(r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ce4f0c638b9e04021e783663d1444ced5e3014414f245a5f657d968c9ad9eef0","location":{"lines":{"begin":{"column":18,"line":78},"end":{"column":32,"line":78}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '(r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c26d636628f51ce805242ffb786b815fa11512d5ed1eabf2790d029be0870964","location":{"lines":{"begin":{"column":49,"line":94},"end":{"column":56,"line":94}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cd09e8e6cdf6e779e7433ca73a7c4e17c2116b40bb578afc518d241d753f62d0","location":{"lines":{"begin":{"column":12,"line":106},"end":{"column":30,"line":106}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"f3e834af77c5657144072f8792314ce1f9c44451b125dc30e2e9c0a2d57ad42b","location":{"lines":{"begin":{"column":20,"line":148},"end":{"column":35,"line":148}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"0b2b8f39565fdf50b124d7f293bbf42188460f6491aad5a8ac7b9246abcb13c5","location":{"lines":{"begin":{"column":20,"line":149},"end":{"column":39,"line":149}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]ui8_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"92018ceb1b39165e73a122d9526860cbcb58b8f58f57acad1b23876084b1a06e","location":{"lines":{"begin":{"column":18,"line":246},"end":{"column":27,"line":246}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b599b7c3927e7c94373e711092fbc74bffd7e6a9587d6d05f9eee70a7cab3d11","location":{"lines":{"begin":{"column":20,"line":452},"end":{"column":29,"line":452}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c6f08edba2f2080c1e5ea445d9cca1f7ec4bacaece6607983c5bf375f48defce","location":{"lines":{"begin":{"column":20,"line":453},"end":{"column":36,"line":453}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cdb979807adb5c1550d298a951d5d6af35ee6cee89ca4babb9c226240a710436","location":{"lines":{"begin":{"column":20,"line":454},"end":{"column":29,"line":454}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"bf990966f19e8d014534ffc73f8d3abfdc5180fd726a321c77d80ffccf9cfd0f","location":{"lines":{"begin":{"column":20,"line":517},"end":{"column":30,"line":517}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"b599b7c3927e7c94373e711092fbc74bffd7e6a9587d6d05f9eee70a7cab3d11","location":{"lines":{"begin":{"column":20,"line":520},"end":{"column":29,"line":520}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c3df0362a7ac9e37bcc8a01b9ef3e0d381f02894c3cb98c29295b5495ca4c45c","location":{"lines":{"begin":{"column":44,"line":701},"end":{"column":53,"line":701}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"e0096de9a2840da325220e70229436d651abccca46dc7a9bd0a19ee0096f31b9","location":{"lines":{"begin":{"column":16,"line":703},"end":{"column":32,"line":703}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"df100f7377a1b5c656302285fe1be2a6666a37ff4dbf554c0f0a26bdb722bf80","location":{"lines":{"begin":{"column":16,"line":704},"end":{"column":31,"line":704}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]r_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"cb22f2f9e1c8ee73d3dc0f0c7efa0c617c40ee64dadef493ccf6fd55967b9cfd","location":{"lines":{"begin":{"column":16,"line":705},"end":{"column":38,"line":705}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"44f132e161decfa65028eff4d35e9a37f1851bd8a8ec11048fed435d2952fc1b","location":{"lines":{"begin":{"column":16,"line":709},"end":{"column":27,"line":709}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '(r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c26d636628f51ce805242ffb786b815fa11512d5ed1eabf2790d029be0870964","location":{"lines":{"begin":{"column":42,"line":842},"end":{"column":49,"line":842}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'e_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ab6faa6b3929adcd71e75d4ffba31da9cabc25d18b49dd59143650e583be477c","location":{"lines":{"begin":{"column":38,"line":844},"end":{"column":53,"line":844}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"zero-init-local-var","content":{"body":""},"description":"Variable de portée globale initialisée à 0","fingerprint":"d9b56ef0da38f3d07f162497309c1e61ee770b156772ed006c7ac8d2386b9d2b","location":{"lines":{"begin":{"column":36,"line":77},"end":{"column":36,"line":77}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/r_delta/source/majr.c"},"severity":"critical","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8fdd072ca62abc9bbe24b81b60687230f7cc964b1489747c8afd5f541faaf6ab","location":{"lines":{"begin":{"column":3,"line":197},"end":{"column":27,"line":197}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPINT"},"description":"Absence de commentaire avant un appel","fingerprint":"e54732bbd63ea81317cf2f22eb0f0e28ca9154b8b94427e2fd8b6b99f3b086d8","location":{"lines":{"begin":{"column":7,"line":217},"end":{"column":25,"line":217}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"e8fb8cdbd50ba60f77359e555ab1fc7b6d313d9805966a62b5b2115fbbcc4c51","location":{"lines":{"begin":{"column":7,"line":222},"end":{"column":30,"line":222}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"e8fb8cdbd50ba60f77359e555ab1fc7b6d313d9805966a62b5b2115fbbcc4c51","location":{"lines":{"begin":{"column":11,"line":230},"end":{"column":34,"line":230}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPINT"},"description":"Absence de commentaire avant un appel","fingerprint":"e54732bbd63ea81317cf2f22eb0f0e28ca9154b8b94427e2fd8b6b99f3b086d8","location":{"lines":{"begin":{"column":13,"line":242},"end":{"column":31,"line":242}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"e8fb8cdbd50ba60f77359e555ab1fc7b6d313d9805966a62b5b2115fbbcc4c51","location":{"lines":{"begin":{"column":3,"line":281},"end":{"column":26,"line":281}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8fdd072ca62abc9bbe24b81b60687230f7cc964b1489747c8afd5f541faaf6ab","location":{"lines":{"begin":{"column":3,"line":282},"end":{"column":27,"line":282}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8fdd072ca62abc9bbe24b81b60687230f7cc964b1489747c8afd5f541faaf6ab","location":{"lines":{"begin":{"column":3,"line":329},"end":{"column":27,"line":329}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"8fdd072ca62abc9bbe24b81b60687230f7cc964b1489747c8afd5f541faaf6ab","location":{"lines":{"begin":{"column":3,"line":330},"end":{"column":27,"line":330}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"23a3f49359a387aace40b1a53ba5899204f74a43882ebfad2aaaa81e1a33f3ca","location":{"lines":{"begin":{"column":47,"line":110},"end":{"column":54,"line":110}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap](r|k|e|u|t|f)_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"1c32ae9c5888ba1e2a2cd4b7ebfd54701d6f6493b2709356073ddef869afe308","location":{"lines":{"begin":{"column":47,"line":111},"end":{"column":53,"line":111}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"2989785fed56602f5c289025594fb16b19d469962172c5a46702396255e74695","location":{"lines":{"begin":{"column":47,"line":112},"end":{"column":58,"line":112}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"1eee675443d7ed64564a27dde9108a117f5e3a3efb680cd382fbb54517796350","location":{"lines":{"begin":{"column":9,"line":115},"end":{"column":18,"line":115}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"c1ff33796ad3a025477901f5d6c154abd49e045931f98b7773ee753df5054c07","location":{"lines":{"begin":{"column":51,"line":140},"end":{"column":62,"line":140}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"513d20c873043f12ff511e1523c6dba65b03acd21323611611f07cdc56ca3091","location":{"lines":{"begin":{"column":51,"line":161},"end":{"column":61,"line":161}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ee016e5d5d77c7234ac0ab5b420e4a9ef3ae00e8500b184858badbdbcbc9ec39","location":{"lines":{"begin":{"column":50,"line":188},"end":{"column":61,"line":188}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'c[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"e32abb0730f330828e383292a1b3230ac2c7a0ee6bb16e4850f070707cc00689","location":{"lines":{"begin":{"column":17,"line":192},"end":{"column":25,"line":192}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]ui32_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"436e59b65f09da81fc3c97ab50a00e78b2436597e6f3d0187b5b0f04681c652d","location":{"lines":{"begin":{"column":72,"line":276},"end":{"column":87,"line":276}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/u_utilitaire/source/maju_utilitaire.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"c8a1517636a76237895d8e75b2d267f1f5a2054ffd5870e17953727670208384","location":{"lines":{"begin":{"column":6,"line":586},"end":{"column":36,"line":586}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":588},"end":{"column":35,"line":588}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"}],"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"b8115919a1a3427cb0555cd8a77c15675f1c88227118784e409f061d5205fde3","location":{"lines":{"begin":{"column":48,"line":369},"end":{"column":87,"line":369}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"703a3914d3ad570251c79a79c6d65480aa653ad672e7f7bd61ec7cd72ca06cbb","location":{"lines":{"begin":{"column":56,"line":831},"end":{"column":54,"line":832}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"48da11ccc08a09b4ec57cc18779a3f2ceae03b9a5817a2595a67eaefd43e3eed","location":{"lines":{"begin":{"column":47,"line":862},"end":{"column":88,"line":862}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"d4d085eeb27c86ec71ae930784124cae1fc7a8e23e054eac8a04786320be0506","location":{"lines":{"begin":{"column":48,"line":369},"end":{"column":87,"line":369}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"ceb99636440c10334ffda997daf8d3a525b5efacee51f2f3f48853409581f3de","location":{"lines":{"begin":{"column":56,"line":831},"end":{"column":54,"line":832}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"92d3306f31a96fb6a315ec08c1442029fa5678c09672cc51b304a6558f144409","location":{"lines":{"begin":{"column":47,"line":862},"end":{"column":88,"line":862}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_valid_fd\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_FD"},"description":"Absence de commentaire avant un appel","fingerprint":"6143f014bce5781719a31f7b6ca74795d3df68b88e4d98d1893bf4b443054e22","location":{"lines":{"begin":{"column":3,"line":639},"end":{"column":17,"line":639}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'l_[ap]c_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"556266236839481fb052d090a09334e0d6e19323634213b9e90daee2b90ddf0f","location":{"lines":{"begin":{"column":16,"line":125},"end":{"column":38,"line":125}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ef57eaa674f255e9d20c78f657b423e2d97e0d3f963013fa4c9257db0e6f83fb","location":{"lines":{"begin":{"column":26,"line":144},"end":{"column":33,"line":144}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":57,"line":191},"end":{"column":64,"line":191}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":58,"line":196},"end":{"column":65,"line":196}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":51,"line":201},"end":{"column":58,"line":201}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":76,"line":239},"end":{"column":83,"line":239}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":77,"line":613},"end":{"column":84,"line":613}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"a7a93fd989a0362ee60fd63a58ca8c98435ad2dea1b881ccdec2ccb70f8d582e","location":{"lines":{"begin":{"column":10,"line":748},"end":{"column":27,"line":748}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ef57eaa674f255e9d20c78f657b423e2d97e0d3f963013fa4c9257db0e6f83fb","location":{"lines":{"begin":{"column":50,"line":856},"end":{"column":57,"line":856}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":50,"line":896},"end":{"column":57,"line":896}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":51,"line":921},"end":{"column":58,"line":921}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'pk_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"eb9ab81c84e594db3426cdd5a54d1a0b3e24e834a66a5825b0e929e17750fa74","location":{"lines":{"begin":{"column":44,"line":985},"end":{"column":51,"line":985}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex '[ap]k_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"ef57eaa674f255e9d20c78f657b423e2d97e0d3f963013fa4c9257db0e6f83fb","location":{"lines":{"begin":{"column":31,"line":990},"end":{"column":38,"line":990}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"1d57c84986891a8f79a92133a872aacc4bdb9350209c306710fc39551bdcf9a7","location":{"lines":{"begin":{"column":12,"line":1150},"end":{"column":20,"line":1150}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"typedef-name","content":{"body":"Le nom de type ne respecte pas le regex 'S[A-Z_]+'"},"description":"Le typedef doit être correctement formaté","fingerprint":"81e20621076e0b3bb765acdb2c1e40509862aafa23cff5fb2f7dccb84aefa5ec","location":{"lines":{"begin":{"column":3,"line":139},"end":{"column":37,"line":139}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["decl"],"check_name":"typedef-name","content":{"body":"Le nom de type ne respecte pas le regex 'S[A-Z_]+'"},"description":"Le typedef doit être correctement formaté","fingerprint":"db6e98685bc83fdca5c4a107f4aff169792a8a3dd268d248d975b9f018fce646","location":{"lines":{"begin":{"column":3,"line":149},"end":{"column":28,"line":149}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"critical","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"c0a2a2ff62a810abc1596deed1b38d620b23b7e303978e1688c9c81e254cf44d","location":{"lines":{"begin":{"column":26,"line":130},"end":{"column":33,"line":130}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"8cb6efba7c45d70a55238275caa423757bd03dbb7b3bf4ed0bd4350a1279d3db","location":{"lines":{"begin":{"column":26,"line":131},"end":{"column":38,"line":131}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"c2740308482cdb61cf45241498e2110072516657957fb71ab9265cfd68e3c813","location":{"lines":{"begin":{"column":12,"line":134},"end":{"column":29,"line":134}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"9b589897d6caa5f309ca32394e72eb0ab30641851a435c1a2a34f5258f030adc","location":{"lines":{"begin":{"column":11,"line":135},"end":{"column":18,"line":135}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"284e9e3fef4b44ba14a82395b6b91c3ebb7896f92cf222db33e4b72b163a70e5","location":{"lines":{"begin":{"column":14,"line":136},"end":{"column":43,"line":136}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"c0a2a2ff62a810abc1596deed1b38d620b23b7e303978e1688c9c81e254cf44d","location":{"lines":{"begin":{"column":26,"line":144},"end":{"column":33,"line":144}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"8cb6efba7c45d70a55238275caa423757bd03dbb7b3bf4ed0bd4350a1279d3db","location":{"lines":{"begin":{"column":26,"line":145},"end":{"column":38,"line":145}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"e18223ef30c49f9c88e9a757ee17f923f6f41ba9e77fd1ed7cb3d10346c0bc39","location":{"lines":{"begin":{"column":26,"line":146},"end":{"column":34,"line":146}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"50b07154b3d96a7186626ecaa7d6f60c19c8101556bbb3dd6cd7d5b5f7bc3943","location":{"lines":{"begin":{"column":26,"line":147},"end":{"column":36,"line":147}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"a63646e3fb62dd98de5a7f279007b830f9be9594d60e91dc994957f188cef6fe","location":{"lines":{"begin":{"column":19,"line":167},"end":{"column":34,"line":167}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"d4f80bbdb6f61dd5443bc9c8946bf3aae26a0173f04237255bb6c5b862e30553","location":{"lines":{"begin":{"column":23,"line":169},"end":{"column":41,"line":169}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"c17d238cdd32db761a103ae2bc7fd5082231c25daa6271254df3b4112d378863","location":{"lines":{"begin":{"column":18,"line":171},"end":{"column":26,"line":171}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"struct-member-prefix","content":{"body":"Le membre ne respecte pas le regex '\\b([a-z]{3})_'"},"description":"Les membres de structures doivent commencer par un préfixe","fingerprint":"c386be5f54a8ff814444093f73ed2e8ba897b4a3000c1f904e4e94ca9db848a7","location":{"lines":{"begin":{"column":18,"line":173},"end":{"column":33,"line":173}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/m_maj/source/majm.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"93d7b08cc5c6f856d55bacfea43c2f21f5190c8a413a73fcdef071b3b41ece06","location":{"lines":{"begin":{"column":6,"line":683},"end":{"column":20,"line":683}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":685},"end":{"column":19,"line":685}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"}],"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"24ff545a0f1bdb6b3e7a4bc2e942cd3c406a35b85c8d86051d616fc332c91ab5","location":{"lines":{"begin":{"column":6,"line":687},"end":{"column":28,"line":687}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":689},"end":{"column":27,"line":689}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"}],"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"free-null-check","content":{"body":""},"description":"Test de null avant appel à une fonction de libération mémoire","fingerprint":"7cd4229a69da6bdcbb0025bd09b0b3503ca83f09ccbf995726a7d2199d921c30","location":{"lines":{"begin":{"column":6,"line":691},"end":{"column":56,"line":691}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"other_locations":[{"lines":{"begin":{"column":5,"line":693},"end":{"column":55,"line":693}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"}],"severity":"minor","type":"issue"} -{"categories":["call"],"check_name":"check-alloc","content":{"body":"Absence d'appel à prereq_ptr_non_nul après une allocation mémoire"},"description":"Absence de vérification après une allocation mémoire","fingerprint":"b0e048ed5c1e027f7acf3bff90d5b522aa4b80399d63dea2188b87cb64d9603a","location":{"lines":{"begin":{"column":33,"line":563},"end":{"column":66,"line":563}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"forbidden-function","content":{"body":""},"description":"Appel d'une fonction blacklisté","fingerprint":"5d8e22e3f281c7af84581af8b9c55ca9adba79a9b6da54cc36e3e2ee65a7b7ce","location":{"lines":{"begin":{"column":33,"line":563},"end":{"column":66,"line":563}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"critical","type":"issue"} -{"categories":["call"],"check_name":"alloc-magic-number","content":{"body":""},"description":"Appel d'une allocation mémoire avec un nombre magique","fingerprint":"e5a829faeae3a01168871cbf88e35eecea3d8c1be67173454e12130d1e99390e","location":{"lines":{"begin":{"column":61,"line":563},"end":{"column":61,"line":563}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"major","type":"issue"} -{"categories":["call"],"check_name":"alloc-magic-number","content":{"body":""},"description":"Appel d'une allocation mémoire avec un nombre magique","fingerprint":"e5a829faeae3a01168871cbf88e35eecea3d8c1be67173454e12130d1e99390e","location":{"lines":{"begin":{"column":65,"line":563},"end":{"column":65,"line":563}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"major","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":5,"line":157},"end":{"column":28,"line":157}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":5,"line":165},"end":{"column":28,"line":165}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":3,"line":210},"end":{"column":26,"line":210}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":3,"line":211},"end":{"column":26,"line":211}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"f5f65427d1ca903d4ea0f8742fbfc53ae54159ff570b6e17c2a3069958e1f02c","location":{"lines":{"begin":{"column":3,"line":212},"end":{"column":27,"line":212}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"f5f65427d1ca903d4ea0f8742fbfc53ae54159ff570b6e17c2a3069958e1f02c","location":{"lines":{"begin":{"column":3,"line":477},"end":{"column":27,"line":477}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":3,"line":622},"end":{"column":26,"line":622}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"f5f65427d1ca903d4ea0f8742fbfc53ae54159ff570b6e17c2a3069958e1f02c","location":{"lines":{"begin":{"column":3,"line":623},"end":{"column":27,"line":623}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"f5f65427d1ca903d4ea0f8742fbfc53ae54159ff570b6e17c2a3069958e1f02c","location":{"lines":{"begin":{"column":3,"line":624},"end":{"column":27,"line":624}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":3,"line":645},"end":{"column":26,"line":645}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_cmpuint\\{.+,\\s*[<>=!]{1,2},.+\\}' attendu pour l'appel de SNTL_PRECOND_CMPUINT"},"description":"Absence de commentaire avant un appel","fingerprint":"12d282cb4ff56c484b6ccc97aef16345ccdcacfca27d69028a25a95bfb8eb0a8","location":{"lines":{"begin":{"column":3,"line":652},"end":{"column":22,"line":652}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":3,"line":659},"end":{"column":26,"line":659}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_ptr_non_nul\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_PTR_NON_NUL"},"description":"Absence de commentaire avant un appel","fingerprint":"4b3b1ad98628accfd6ba27aded099e37b31d9ca23f36e2195b1094780080acee","location":{"lines":{"begin":{"column":3,"line":741},"end":{"column":26,"line":741}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["comm"],"check_name":"call-tag","content":{"body":"Commentaire '\\/\\/\\/ @pre_str_non_vide\\{.+\\}' attendu pour l'appel de SNTL_PRECOND_STR_NON_VIDE"},"description":"Absence de commentaire avant un appel","fingerprint":"f5f65427d1ca903d4ea0f8742fbfc53ae54159ff570b6e17c2a3069958e1f02c","location":{"lines":{"begin":{"column":3,"line":742},"end":{"column":27,"line":742}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"minor","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"56cb779099f8416d00e0322c6ea0197e193706457ae5d4fb5a3c9382e66ba65a","location":{"lines":{"begin":{"column":9,"line":207},"end":{"column":26,"line":207}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"var-name","content":{"body":"Le nom de variable ne respecte pas le regex 'i_\\w+'"},"description":"Les noms de variables doivent être correctement formatés","fingerprint":"56cb779099f8416d00e0322c6ea0197e193706457ae5d4fb5a3c9382e66ba65a","location":{"lines":{"begin":{"column":24,"line":270},"end":{"column":41,"line":270}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"major","type":"issue"} -{"categories":["decl"],"check_name":"function-name","content":{"body":"Le nom de fonction ne respecte pas le regex '\\b[A-Z]\\w+\\b'"},"description":"Les fonctions doivent être nommées en fonction de leur portée","fingerprint":"c6d3c8302798d7c12dc1abc08745c90e25bf3988d6e07b518c92ee0bc8749c17","location":{"lines":{"begin":{"column":16,"line":75},"end":{"column":33,"line":75}},"path":"/home/ftrefou/repos/project-A1-5.x/sous-systemes/gesmaj/proc_gesmaj/x_manifest/source/majx.c"},"severity":"major","type":"issue"} diff --git a/testdata/reports/codeparser-report.json b/testdata/reports/codeparser-report.json new file mode 100644 index 0000000..b418c04 --- /dev/null +++ b/testdata/reports/codeparser-report.json @@ -0,0 +1,13 @@ +{"type":"issue","check_name":"buffer-overflow","description":"Unsafe use of strcpy(): destination buffer size is not checked.","categories":["Bug Risk","Security"],"severity":"critical","location":{"path":"src/core/utils.c","lines":{"begin":9,"end":9}},"fingerprint":"cp-bo-001","content":{"body":"strcpy() copies bytes until a null terminator is found without verifying the destination buffer size. Use strncpy(), strlcpy(), or snprintf() instead. This is a common source of stack-based buffer overflow vulnerabilities (CWE-120)."}} +{"type":"issue","check_name":"missing-null-check","description":"Return value of malloc() not checked for NULL before use.","categories":["Bug Risk"],"severity":"major","location":{"path":"src/core/utils.c","lines":{"begin":26,"end":27}},"fingerprint":"cp-null-001","content":{"body":"Memory allocation can fail and return NULL, especially under low-memory conditions. Always check the return value before dereferencing the pointer to prevent a null pointer dereference (CWE-476)."}} +{"type":"issue","check_name":"div-by-zero","description":"Potential division by zero: parameter 'b' is not validated before use as divisor.","categories":["Bug Risk"],"severity":"major","location":{"path":"src/core/utils.c","lines":{"begin":14,"end":14}},"fingerprint":"cp-dbz-001","content":{"body":"If 'b' is zero, this expression triggers undefined behaviour on signed integers and a SIGFPE signal on most platforms. Add a guard: if (b == 0) return 0; or assert(b != 0)."}} +{"type":"issue","check_name":"global-variable","description":"Global mutable variable 'global_buffer' declared at file scope.","categories":["Style","Complexity"],"severity":"minor","location":{"path":"src/core/utils.c","lines":{"begin":5,"end":5}},"fingerprint":"cp-global-001","content":{"body":"Global variables introduce hidden state that makes functions hard to test, reason about, and use safely from multiple threads. Encapsulate state in a struct and pass it explicitly as a parameter."}} +{"type":"issue","check_name":"buffer-overflow","description":"memcpy() called with an unchecked caller-supplied size argument.","categories":["Bug Risk","Security"],"severity":"critical","location":{"path":"src/core/utils.c","lines":{"begin":20,"end":20}},"fingerprint":"cp-bo-002","content":{"body":"The 'size' parameter is not validated against the destination buffer capacity (256 bytes). If size > 256, this overwrites adjacent stack memory, enabling stack-smashing attacks. Add: if (size > sizeof(buf)) return;"}} +{"type":"issue","check_name":"use-after-free","description":"'global_buffer' freed in free_resources() but accessible via copy_string() in subsequent calls.","categories":["Bug Risk","Security"],"severity":"blocker","location":{"path":"src/core/utils.c","lines":{"begin":32,"end":33}},"fingerprint":"cp-uaf-001","content":{"body":"After free(global_buffer) the pointer is set to NULL locally, but any external copy of the pointer can still be dereferenced, causing heap use-after-free (CWE-416). This is a common vector for heap exploitation."},"other_locations":[{"path":"src/core/utils.c","lines":{"begin":9,"end":9}}]} +{"type":"issue","check_name":"missing-error-check","description":"Return value of printf() is not checked.","categories":["Bug Risk"],"severity":"info","location":{"path":"src/core/utils.c","lines":{"begin":21,"end":21}},"fingerprint":"cp-ec-001","content":{"body":"In production code, the return value of I/O functions such as printf() should be checked to detect write errors, especially when writing to files or sockets rather than stdout."}} +{"type":"issue","check_name":"global-variable","description":"Global Parser instance 'g_parser' declared in header file.","categories":["Style","Complexity"],"severity":"minor","location":{"path":"src/core/parser.h","lines":{"begin":25,"end":25}},"fingerprint":"cp-global-002","content":{"body":"Declaring a global instance in a header file means every translation unit that includes this header shares the same instance, causing coupling and thread-safety issues. Use an accessor function or pass the context as a parameter."}} +{"type":"issue","check_name":"fixed-array","description":"Fixed-size array 'tokens[MAX_TOKENS]' may overflow for inputs larger than 100 tokens.","categories":["Bug Risk"],"severity":"major","location":{"path":"src/core/parser.h","lines":{"begin":19,"end":19}},"fingerprint":"cp-arr-001","content":{"body":"The MAX_TOKENS constant (100) imposes a hard limit on input size. Inputs exceeding this will cause silent truncation or a write past the end of the array. Consider using a dynamically resizable array with a documented growth strategy."}} +{"type":"issue","check_name":"fixed-size-buffer","description":"Fixed-size 'value[256]' field in Token may silently truncate long token values.","categories":["Bug Risk"],"severity":"minor","location":{"path":"src/core/parser.h","lines":{"begin":12,"end":12}},"fingerprint":"cp-fsb-001","content":{"body":"Token values longer than 255 characters will be silently truncated during a strcpy/strncpy into this field, potentially corrupting token semantics. Use a dynamically allocated string or a length-prefixed representation."}} +{"type":"issue","check_name":"raw-pointer","description":"Raw pointer 'source' member has no ownership semantics.","categories":["Style"],"severity":"minor","location":{"path":"src/core/parser.h","lines":{"begin":21,"end":21}},"fingerprint":"cp-ptr-001","content":{"body":"Raw pointer members make ownership and lifetime ambiguous. Document clearly who allocates and frees this pointer, or use a reference-counted handle and a dedicated destructor function."}} +{"type":"issue","check_name":"magic-number","description":"Magic number 256 used directly in struct definition.","categories":["Style"],"severity":"info","location":{"path":"src/core/parser.h","lines":{"begin":12,"end":12}},"fingerprint":"cp-magic-001","content":{"body":"Replace the literal 256 with a named constant (e.g. MAX_TOKEN_VALUE_LEN) defined alongside MAX_TOKENS so that the constraint is visible and can be changed in one place."}} +{"type":"issue","check_name":"integer-overflow","description":"Potential integer overflow in malloc size computation.","categories":["Bug Risk","Security"],"severity":"major","location":{"path":"src/core/utils.c","lines":{"begin":26,"end":26}},"fingerprint":"cp-io-001","content":{"body":"If 'n' is attacker-controlled and large, the expression n * sizeof(int) can overflow a signed int, resulting in a smaller-than-expected allocation. The subsequent writes to arr[0..n-1] then write past the allocation, causing a heap buffer overflow (CWE-122)."}} diff --git a/testdata/reports/eslint-report.json b/testdata/reports/eslint-report.json new file mode 100644 index 0000000..80b364a --- /dev/null +++ b/testdata/reports/eslint-report.json @@ -0,0 +1,13 @@ +{"type":"issue","check_name":"no-var","description":"Unexpected var, use let or const instead.","categories":["Style"],"severity":"minor","location":{"path":"src/auth/auth.ts","lines":{"begin":11,"end":11}},"fingerprint":"eslint-no-var-001","content":{"body":"Variables declared with `var` are function-scoped and hoisted, which can lead to subtle bugs. Use `let` for mutable variables or `const` for immutable bindings."}} +{"type":"issue","check_name":"@typescript-eslint/no-explicit-any","description":"Unexpected any. Specify a different type.","categories":["Style"],"severity":"minor","location":{"path":"src/auth/auth.ts","lines":{"begin":11,"end":11}},"fingerprint":"eslint-no-any-001","content":{"body":"Using the `any` type disables TypeScript's static type checking. Consider using `unknown` with a type guard, or define a proper interface."}} +{"type":"issue","check_name":"eqeqeq","description":"Expected '===' and instead saw '=='.","categories":["Style","Bug Risk"],"severity":"minor","location":{"path":"src/auth/auth.ts","lines":{"begin":15,"end":15}},"fingerprint":"eslint-eqeqeq-001","content":{"body":"The `==` operator performs type coercion before comparison, which can produce unexpected results. Always use `===` for strict equality checks."}} +{"type":"issue","check_name":"@typescript-eslint/no-explicit-any","description":"Unexpected any. Specify a different type.","categories":["Style"],"severity":"minor","location":{"path":"src/auth/auth.ts","lines":{"begin":23,"end":23}},"fingerprint":"eslint-no-any-002","content":{"body":"Define a proper `User` interface with the expected properties instead of using `any` as the parameter type."}} +{"type":"issue","check_name":"@typescript-eslint/explicit-module-boundary-types","description":"Missing return type on function 'generateToken'.","categories":["Style"],"severity":"info","location":{"path":"src/auth/auth.ts","lines":{"begin":18,"end":21}},"fingerprint":"eslint-returntype-001","content":{"body":"Explicitly specifying return types improves code readability and helps TypeScript catch type errors earlier in the compilation pipeline."}} +{"type":"issue","check_name":"complexity","description":"Function 'verifyToken' has a cyclomatic complexity of 3. Maximum allowed is 2.","categories":["Complexity"],"severity":"info","location":{"path":"src/auth/auth.ts","lines":{"begin":10,"end":16}},"fingerprint":"eslint-complexity-001","content":{"body":"High cyclomatic complexity makes code harder to test and maintain. Consider extracting conditional logic into small, well-named helper functions."}} +{"type":"issue","check_name":"no-console","description":"Unexpected console statement.","categories":["Style"],"severity":"info","location":{"path":"src/api/router.ts","lines":{"begin":13,"end":13}},"fingerprint":"eslint-console-001","content":{"body":"console.log statements should not be present in production code. Use a structured logger (e.g. pino, winston) with appropriate log levels instead."}} +{"type":"issue","check_name":"@typescript-eslint/no-floating-promises","description":"Promises must be awaited, end with a call to .catch, or end with a call to .then with a rejection handler.","categories":["Bug Risk"],"severity":"major","location":{"path":"src/api/router.ts","lines":{"begin":5,"end":9}},"fingerprint":"eslint-fp-001","content":{"body":"Unhandled promise rejections can cause silent failures in Express route handlers. Ensure all async operations are properly awaited and errors are caught and forwarded to next()."}} +{"type":"issue","check_name":"@typescript-eslint/no-explicit-any","description":"Unexpected any. Specify a different type.","categories":["Style"],"severity":"minor","location":{"path":"src/api/router.ts","lines":{"begin":27,"end":27}},"fingerprint":"eslint-no-any-003","content":{"body":"Use the built-in `Error` type or define a custom error interface instead of `any` for the error parameter."}} +{"type":"issue","check_name":"@typescript-eslint/no-unused-vars","description":"'formatError' is defined but never used.","categories":["Style"],"severity":"minor","location":{"path":"src/api/router.ts","lines":{"begin":27,"end":29}},"fingerprint":"eslint-unused-001","content":{"body":"Remove unused function declarations to keep the codebase clean, or export the function if it is intended to be used by other modules."}} +{"type":"issue","check_name":"no-restricted-syntax","description":"Template literal containing SQL keyword — use a parameterised query instead.","categories":["Security","Bug Risk"],"severity":"major","location":{"path":"src/api/router.ts","lines":{"begin":7,"end":7}},"fingerprint":"eslint-sql-001","content":{"body":"Interpolating user-controlled values into SQL strings enables SQL injection. Use a parameterised query: db.query('SELECT * FROM users WHERE id = ?', [id])."}} +{"type":"issue","check_name":"no-restricted-syntax","description":"Template literal containing SQL keyword — use a parameterised query instead.","categories":["Security","Bug Risk"],"severity":"major","location":{"path":"src/api/router.ts","lines":{"begin":23,"end":23}},"fingerprint":"eslint-sql-002","content":{"body":"Interpolating user-controlled values into a DELETE statement enables SQL injection. An attacker can delete arbitrary rows or bypass WHERE conditions entirely."}} +{"type":"issue","check_name":"no-restricted-syntax","description":"Template literal containing SQL keyword — use a parameterised query instead.","categories":["Security","Bug Risk"],"severity":"major","location":{"path":"src/api/router.ts","lines":{"begin":25,"end":25}},"fingerprint":"eslint-sql-003","content":{"body":"Interpolating user-controlled values into a DELETE statement enables SQL injection. An attacker can delete arbitrary rows or bypass WHERE conditions entirely."}} diff --git a/testdata/reports/grep-report.json b/testdata/reports/grep-report.json new file mode 100644 index 0000000..6cbfabf --- /dev/null +++ b/testdata/reports/grep-report.json @@ -0,0 +1,34 @@ +[ + { + "type": "issue", + "check_name": "grep/error-keyword", + "description": "Found \"error\": function formatError(err: any): string {", + "categories": [ + "Bug Risk" + ], + "location": { + "path": "src/api/router.ts", + "lines": { + "begin": 27 + } + }, + "severity": "minor", + "fingerprint": "57459c0b5f0a1cc94803a14db4a84e72" + }, + { + "type": "issue", + "check_name": "grep/error-keyword", + "description": "Found \"error\": return `Error: ${err.message}`;", + "categories": [ + "Bug Risk" + ], + "location": { + "path": "src/api/router.ts", + "lines": { + "begin": 28 + } + }, + "severity": "minor", + "fingerprint": "cbf6054f13d4aa9ca2f00548a7e11c96" + } +] \ No newline at end of file diff --git a/testdata/reports/history/codeclimate-visualiser.history.ndjson b/testdata/reports/history/codeclimate-visualiser.history.ndjson new file mode 100644 index 0000000..c536203 --- /dev/null +++ b/testdata/reports/history/codeclimate-visualiser.history.ndjson @@ -0,0 +1,10 @@ +{"id":"0e2ddb04-f08d-47ae-8e1a-44fcbbdfd5e0","timestamp":"2026-02-18T11:45:41.178Z","label":"v0.8.0","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":5,"major":12,"minor":4,"info":1},"total":25,"nativeCount":25,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002"]} +{"id":"132fe0cf-0f45-42c3-920f-3f4f7301a5d2","timestamp":"2026-03-04T11:45:41.178Z","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":5,"major":13,"minor":6,"info":1},"total":28,"nativeCount":28,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","eslint-returntype-001","cp-bo-002"]} +{"id":"20b66a87-b122-48b1-8d90-44f8bca6f107","timestamp":"2026-03-11T11:45:41.178Z","label":"v0.9.0","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":6,"major":13,"minor":7,"info":1},"total":30,"nativeCount":30,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","eslint-returntype-001","cp-bo-002","sg-uaf-001","cp-ptr-001"]} +{"id":"f1e77dd4-2138-41ea-8202-a1165810ffba","timestamp":"2026-03-18T11:45:41.178Z","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":6,"major":13,"minor":5,"info":1},"total":28,"nativeCount":28,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","cp-bo-002","sg-uaf-001"]} +{"id":"19e0b2b3-62e1-4a57-b646-75786d47a028","timestamp":"2026-03-25T11:45:41.178Z","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":6,"major":15,"minor":5,"info":1},"total":30,"nativeCount":30,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","cp-bo-002","sg-uaf-001","sg-path-001","cp-race-001"]} +{"id":"3128b0b4-3317-45c5-9f85-51865378435a","timestamp":"2026-04-01T11:45:41.178Z","label":"v1.0.0","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":8,"major":13,"minor":8,"info":1},"total":33,"nativeCount":33,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","eslint-returntype-001","eslint-fp-001","cp-bo-002","sg-uaf-001","sg-auth-001","sg-bo-001","cp-ptr-001"]} +{"id":"a55a9c96-bfb4-4907-ad30-9cb916ef49b8","timestamp":"2026-04-08T11:45:41.178Z","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":8,"major":13,"minor":9,"info":1},"total":34,"nativeCount":34,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","eslint-returntype-001","eslint-fp-001","cp-bo-002","sg-uaf-001","sg-auth-001","sg-bo-001","cp-ptr-001","eslint-async-001"]} +{"id":"f1651061-4b0f-4131-aee8-a6d9ce58d835","timestamp":"2026-04-15T11:45:41.178Z","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":8,"major":13,"minor":6,"info":1},"total":31,"nativeCount":31,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","eslint-fp-001","cp-bo-002","sg-uaf-001","sg-auth-001","sg-bo-001"]} +{"id":"dbb21887-6ac7-416d-ab73-ba57a8d9a5b6","timestamp":"2026-04-22T11:45:41.178Z","label":"v1.1.0","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":8,"major":14,"minor":9,"info":2},"total":36,"nativeCount":36,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","eslint-returntype-001","eslint-fp-001","eslint-no-any-003","cp-bo-002","sg-uaf-001","sg-auth-001","sg-bo-001","cp-ptr-001","cp-leak-001","eslint-unused-001"]} +{"id":"6ad8b827-e0b1-4b61-bbc7-4f27abfad5ec","timestamp":"2026-04-29T11:45:41.178Z","sources":["eslint-report.json","semgrep-report.json","codeparser-report.json"],"counts":{"blocker":3,"critical":8,"major":13,"minor":9,"info":1},"total":34,"nativeCount":34,"derivedCount":0,"volatileCount":0,"fingerprints":["sg-sqli-001","sg-sqli-002","sg-secret-001","sg-crypto-001","sg-cred-001","sg-token-001","sg-bo-002","sg-io-001","cp-bo-001","cp-null-001","cp-dbz-001","cp-global-001","cp-uaf-001","cp-ec-001","cp-global-002","cp-arr-001","cp-fsb-001","cp-magic-001","cp-io-001","eslint-no-var-001","eslint-no-any-001","eslint-eqeqeq-001","eslint-complexity-001","eslint-sql-001","eslint-sql-002","eslint-no-any-002","eslint-returntype-001","eslint-fp-001","eslint-no-any-003","cp-bo-002","sg-uaf-001","sg-auth-001","sg-bo-001","cp-ptr-001"]} diff --git a/testdata/reports/semgrep-report.json b/testdata/reports/semgrep-report.json new file mode 100644 index 0000000..8b10291 --- /dev/null +++ b/testdata/reports/semgrep-report.json @@ -0,0 +1,11 @@ +{"type":"issue","check_name":"sql-injection","description":"User-controlled data flows into a SQL query without sanitization.","categories":["Security"],"severity":"blocker","location":{"path":"src/api/router.ts","lines":{"begin":7,"end":7}},"fingerprint":"sg-sqli-001","content":{"body":"req.params.id is interpolated directly into the SQL string. An attacker can set id to e.g. '1 OR 1=1' to bypass WHERE clauses or '1; DROP TABLE users;--' to execute arbitrary statements. Use a parameterised query: db.query('SELECT * FROM users WHERE id = ?', [id])."}} +{"type":"issue","check_name":"sql-injection","description":"User-controlled data flows into a DELETE SQL query without sanitization.","categories":["Security"],"severity":"blocker","location":{"path":"src/api/router.ts","lines":{"begin":23,"end":23}},"fingerprint":"sg-sqli-002","content":{"body":"The DELETE endpoint interpolates req.params.id without any validation or escaping. This allows privilege escalation (delete any row) or destructive injection. Replace with a parameterised statement and add authorisation checks."}} +{"type":"issue","check_name":"hardcoded-secret","description":"Hard-coded cryptographic secret detected in source code.","categories":["Security"],"severity":"critical","location":{"path":"src/auth/auth.ts","lines":{"begin":3,"end":3}},"fingerprint":"sg-secret-001","content":{"body":"The value 'hardcoded-secret-abc123' is committed to version control. Any developer, CI system, or attacker with repository access can extract it and forge tokens. Load secrets from environment variables (process.env.SECRET_KEY) or a secrets manager at runtime."}} +{"type":"issue","check_name":"weak-crypto-hash","description":"MD5 is a cryptographically broken hash algorithm.","categories":["Security"],"severity":"major","location":{"path":"src/auth/auth.ts","lines":{"begin":7,"end":7}},"fingerprint":"sg-crypto-001","content":{"body":"MD5 is vulnerable to collision attacks and, for passwords, can be reversed via rainbow tables in seconds. Use a slow, salted password hashing function: bcrypt (cost ≥ 12), scrypt, or Argon2id."}} +{"type":"issue","check_name":"credential-exposure","description":"Password value passed to console.log — credentials will appear in application logs.","categories":["Security"],"severity":"critical","location":{"path":"src/api/router.ts","lines":{"begin":13,"end":13}},"fingerprint":"sg-cred-001","content":{"body":"Logging the raw password exposes credentials in log files, monitoring dashboards, and crash reports. Log only non-sensitive fields such as username and timestamp, and redact or omit the password entirely."}} +{"type":"issue","check_name":"insecure-token","description":"Authentication token generated without a cryptographic signature.","categories":["Security"],"severity":"major","location":{"path":"src/auth/auth.ts","lines":{"begin":20,"end":20}},"fingerprint":"sg-token-001","content":{"body":"btoa(JSON.stringify(payload)) produces a base64-encoded string that any client can decode and modify without detection. Use a proper JWT library with a signing algorithm (HS256 with a strong secret, or RS256/ES256 with an asymmetric key pair)."}} +{"type":"issue","check_name":"missing-authentication","description":"DELETE endpoint performs a destructive operation without verifying caller identity.","categories":["Security"],"severity":"major","location":{"path":"src/api/router.ts","lines":{"begin":21,"end":25}},"fingerprint":"sg-auth-001","content":{"body":"The /user/:id DELETE route executes a database deletion without checking that the request is authenticated or that the caller is authorised to delete the target resource. Add an authentication middleware and a resource ownership check."}} +{"type":"issue","check_name":"buffer-overflow","description":"strcpy() is a banned API and a known source of stack-based buffer overflows.","categories":["Security","Bug Risk"],"severity":"critical","location":{"path":"src/core/utils.c","lines":{"begin":9,"end":9}},"fingerprint":"sg-bo-001","content":{"body":"strcpy() has been removed from secure coding standards (SEI CERT C STR31-C, CWE-120). Replace with strncpy(dst, src, dst_size - 1) followed by explicit null-termination, or use a safe string library."}} +{"type":"issue","check_name":"buffer-overflow","description":"memcpy() called with an attacker-controlled length — potential stack smash.","categories":["Security","Bug Risk"],"severity":"critical","location":{"path":"src/core/utils.c","lines":{"begin":20,"end":20}},"fingerprint":"sg-bo-002","content":{"body":"The 'size' parameter flows from the caller without bounds checking against buf[256]. Writing beyond the buffer boundary overwrites the return address, enabling stack-smashing exploits (CWE-121). Add: if ((size_t)size > sizeof(buf)) { /* handle error */ return; }"}} +{"type":"issue","check_name":"integer-overflow","description":"Potential integer overflow in malloc() size computation: n * sizeof(int).","categories":["Security","Bug Risk"],"severity":"major","location":{"path":"src/core/utils.c","lines":{"begin":26,"end":26}},"fingerprint":"sg-io-001","content":{"body":"If 'n' is attacker-controlled, the multiplication n * sizeof(int) can overflow a signed int, wrapping to a small positive value. malloc() then allocates a small buffer, and subsequent writes to arr[0..n-1] overflow the heap (CWE-122). Use size_t arithmetic and a checked multiply."}} +{"type":"issue","check_name":"use-after-free","description":"Heap memory freed in free_resources() remains accessible through 'global_buffer'.","categories":["Security","Bug Risk"],"severity":"critical","location":{"path":"src/core/utils.c","lines":{"begin":32,"end":32}},"fingerprint":"sg-uaf-001","content":{"body":"After free(global_buffer), any code path that later dereferences a stale copy of the pointer triggers undefined behaviour. Heap use-after-free is a critical vulnerability (CWE-416) commonly exploited to achieve arbitrary code execution via heap spray or tcache poisoning."}} diff --git a/testdata/scripts/grep-errors.js b/testdata/scripts/grep-errors.js new file mode 100644 index 0000000..e264a07 --- /dev/null +++ b/testdata/scripts/grep-errors.js @@ -0,0 +1,44 @@ +#!/usr/bin/env node +'use strict'; +// Grep for "error" keyword in src/ and emit a CodeClimate-format JSON report. +// Run from workspace root (testdata/): node scripts/grep-errors.js + +const { execSync } = require('child_process'); +const { createHash } = require('crypto'); +const fs = require('fs'); + +const OUTPUT = 'reports/grep-report.json'; +const EXTS = ['ts', 'js', 'c', 'h', 'rb', 'py', 'go', 'java']; +const INCLUDE_FLAGS = EXTS.map(e => `--include="*.${e}"`).join(' '); + +let raw = ''; +try { + raw = execSync(`grep -rn -i ${INCLUDE_FLAGS} "error" src/ 2>/dev/null`, { + encoding: 'utf-8', + shell: true, + }); +} catch (e) { + // grep exits 1 when no matches — that's fine + raw = e.stdout ?? ''; +} + +const issues = []; +for (const line of raw.split('\n')) { + const m = line.match(/^([^:]+):(\d+):(.*)$/); + if (!m) continue; + const [, filePath, lineno, text] = m; + const fp = createHash('md5').update(`${filePath}:${lineno}`).digest('hex'); + issues.push({ + type: 'issue', + check_name: 'grep/error-keyword', + description: `Found "error": ${text.trim().slice(0, 150)}`, + categories: ['Bug Risk'], + location: { path: filePath, lines: { begin: parseInt(lineno, 10) } }, + severity: 'minor', + fingerprint: fp, + }); +} + +fs.mkdirSync('reports', { recursive: true }); +fs.writeFileSync(OUTPUT, JSON.stringify(issues, null, 2)); +console.log(`grep-errors: ${issues.length} issue(s) written to ${OUTPUT}`); diff --git a/testdata/src/api/router.ts b/testdata/src/api/router.ts new file mode 100644 index 0000000..c4e37c9 --- /dev/null +++ b/testdata/src/api/router.ts @@ -0,0 +1,31 @@ +import express, { Request, Response } from 'express'; + +const router = express.Router(); + +router.get('/user/:id', async (req: Request, res: Response) => { + const id = req.params.id; + const query = `SELECT * FROM users WHERE id = ${id}`; + res.json({ query }); +}); + +router.post('/login', async (req: Request, res: Response) => { + const { username, password } = req.body; + console.log('Login attempt:', username, password); + if (!username || !password) { + res.status(400).send('Missing credentials'); + return; + } + res.send('ok'); +}); + +router.delete('/user/:id', async (req: Request, res: Response) => { + const id = req.params.id; + const query = `DELETE FROM users WHERE id = ${id}`; + res.json({ deleted: id }); +}); + +function formatError(err: any): string { + return `Error: ${err.message}`; +} + +export default router; diff --git a/testdata/src/auth/auth.ts b/testdata/src/auth/auth.ts new file mode 100644 index 0000000..e442797 --- /dev/null +++ b/testdata/src/auth/auth.ts @@ -0,0 +1,25 @@ +import crypto from 'crypto'; + +const SECRET_KEY = 'hardcoded-secret-abc123'; +const TOKEN_EXPIRY = 3600000; + +export function hashPassword(password: string): string { + return crypto.createHash('md5').update(password).digest('hex'); +} + +export function verifyToken(token: string): boolean { + var decoded: any = JSON.parse(atob(token)); + if (decoded.exp < Date.now()) { + return false; + } + return decoded.valid == true; +} + +export function generateToken(userId: number, role: string): string { + const payload = { userId, role, exp: Date.now() + TOKEN_EXPIRY }; + return btoa(JSON.stringify(payload)); +} + +export function checkAdmin(user: any): boolean { + return user.role === 'admin'; +} diff --git a/testdata/src/core/parser.h b/testdata/src/core/parser.h new file mode 100644 index 0000000..8f078af --- /dev/null +++ b/testdata/src/core/parser.h @@ -0,0 +1,33 @@ +#ifndef PARSER_H +#define PARSER_H + +#include + +#define MAX_TOKENS 100 +#define BUFFER_SIZE 1024 + +typedef struct +{ + char type[32]; + char value[256]; + int line; + int column; +} Token; + +typedef struct +{ + Token tokens[MAX_TOKENS]; + int count; + char *source; + int capacity; +} Parser; + +extern Parser *g_parser; + +void parser_init(Parser *p, const char *src, size_t len); +Token parser_next(Parser *p); +int parser_peek(Parser *p); +void parser_reset(Parser *p); +void parser_free(Parser *p); + +#endif /* PARSER_H */ diff --git a/testdata/src/core/utils.c b/testdata/src/core/utils.c new file mode 100644 index 0000000..540e3b6 --- /dev/null +++ b/testdata/src/core/utils.c @@ -0,0 +1,34 @@ +#include +#include +#include + +char *global_buffer = NULL; + +void copy_string(char *dst, const char *src) +{ + strcpy(dst, src); +} + +int safe_divide(int a, int b) +{ + return a / b; +} + +void process_input(void *data, int size) +{ + char buf[256]; + memcpy(buf, data, size); + printf("%s\n", buf); +} + +int *create_array(int n) +{ + int *arr = malloc(n * sizeof(int)); + return arr; +} + +void free_resources(void) +{ + free(global_buffer); + global_buffer = NULL; +} diff --git a/tmp_for_claude/embedded-view.png b/tmp_for_claude/embedded-view.png new file mode 100644 index 0000000..4f4b30a Binary files /dev/null and b/tmp_for_claude/embedded-view.png differ diff --git a/tmp_for_claude/issue-list.png b/tmp_for_claude/issue-list.png new file mode 100644 index 0000000..b821203 Binary files /dev/null and b/tmp_for_claude/issue-list.png differ diff --git a/tmp_for_claude/overview.png b/tmp_for_claude/overview.png new file mode 100644 index 0000000..aa3be19 Binary files /dev/null and b/tmp_for_claude/overview.png differ diff --git a/tmp_for_claude/trends.png b/tmp_for_claude/trends.png new file mode 100644 index 0000000..e4e8823 Binary files /dev/null and b/tmp_for_claude/trends.png differ