Merge pull request #90 from CarterPerez-dev/chore/issue-77-pt3

issue 77 pt3 golangci
This commit is contained in:
Carter Perez 2026-02-18 20:26:02 -05:00 committed by GitHub
commit 7d81b29646
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 32 additions and 296 deletions

View File

@ -1,120 +0,0 @@
name: ESLint Check
on:
pull_request:
branches: [ '*' ]
paths:
- 'PROJECTS/api-security-scanner/frontend/**/*.ts'
- 'PROJECTS/api-security-scanner/frontend/**/*.tsx'
- 'PROJECTS/api-security-scanner/frontend/eslint.config.js'
- 'PROJECTS/api-security-scanner/frontend/tsconfig*.json'
- 'PROJECTS/api-security-scanner/frontend/package.json'
- '.github/workflows/eslint-check.yml'
jobs:
eslint-check:
name: ESLint TypeScript Check
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
defaults:
run:
working-directory: PROJECTS/api-security-scanner/frontend
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: PROJECTS/api-security-scanner/frontend/package-lock.json
- name: Install dependencies
run: npm install
- name: Run ESLint
id: eslint_check
run: |
echo "Running ESLint on TypeScript/React files..."
if npm run lint:eslint > eslint-output.txt 2>&1; then
echo "ESLINT_PASSED=true" >> $GITHUB_ENV
echo "✅ No ESLint errors found!"
echo "ERROR_COUNT=0" >> $GITHUB_ENV
else
echo "ESLINT_PASSED=false" >> $GITHUB_ENV
# Count error lines (lines that contain file paths with problems)
error_count=$(grep -c "^/" eslint-output.txt || echo "0")
echo "ERROR_COUNT=$error_count" >> $GITHUB_ENV
echo "⚠️ ESLint found issues in $error_count files!"
fi
cat eslint-output.txt
continue-on-error: true
- name: Create ESLint Summary
id: create_summary
if: github.event_name == 'pull_request'
run: |
{
echo '## 🔍 ESLint Results'
echo ''
if [[ "${{ env.ESLINT_PASSED }}" == "true" ]]; then
echo '### ✅ **Perfect! No ESLint issues found** 🎉'
echo ''
echo 'Your TypeScript and React code follows all the coding standards perfectly!'
echo ''
echo '**What was checked:**'
echo '- TypeScript strict type checking and stylistic rules'
echo '- React component patterns and hooks usage'
echo '- Code complexity, naming conventions, and best practices'
echo '- Accessibility (jsx-a11y) and React Refresh compatibility'
else
echo '### ❌ **ESLint found issues in ${{ env.ERROR_COUNT }} files**'
echo ''
echo 'Please review and fix the TypeScript/React issues below:'
echo ''
echo '<details><summary>📋 View detailed ESLint output</summary>'
echo ''
echo '```'
head -100 eslint-output.txt
echo '```'
echo '</details>'
echo ''
echo '**How to fix:**'
echo '1. Run `cd frontend && npm run lint:eslint` locally to see the issues'
echo '2. Fix the reported TypeScript, React, and code quality problems'
echo '3. For auto-fixable issues: `cd frontend && npx eslint . --ext .ts,.tsx --fix`'
echo '4. Push your changes to update this PR'
fi
echo ''
echo '**Commands:**'
echo '- `cd frontend && npm run lint:eslint` - Run ESLint'
echo '- `cd frontend && npx eslint . --ext .ts,.tsx --fix` - Auto-fix issues'
echo '- ESLint config: `frontend/eslint.config.js`'
echo ''
echo '<!-- eslint-check-comment-marker -->'
} > eslint-report.md
- name: Post PR Comment
if: github.event_name == 'pull_request'
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.pull_request.number }}
body-path: PROJECTS/api-security-scanner/frontend/eslint-report.md
edit-mode: replace
- name: Exit with proper code
run: |
if [[ "${{ env.ESLINT_PASSED }}" == "false" ]]; then
echo "❌ ESLint checks failed. Please fix the issues above."
exit 1
else
echo "✅ All ESLint checks passed!"
exit 0
fi

View File

@ -63,10 +63,6 @@ jobs:
- name: ai-threat-detection-backend
type: ruff
path: PROJECTS/advanced/ai-threat-detection/backend
# Python (ruff) - Templates
- name: fullstack-template-backend
type: ruff
path: TEMPLATES/fullstack-template/backend
# Biome (frontend)
- name: bug-bounty-platform-frontend
type: biome
@ -83,9 +79,6 @@ jobs:
- name: encrypted-p2p-chat-frontend
type: biome
path: PROJECTS/advanced/encrypted-p2p-chat/frontend
- name: fullstack-template-frontend
type: biome
path: TEMPLATES/fullstack-template/frontend
# Go
- name: simple-vulnerability-scanner
type: go

View File

@ -1,129 +0,0 @@
name: TypeScript Type Check
on:
pull_request:
branches: [ '*' ]
paths:
- 'PROJECTS/api-security-scanner/frontend/**/*.ts'
- 'PROJECTS/api-security-scanner/frontend/**/*.tsx'
- 'PROJECTS/api-security-scanner/frontend/tsconfig*.json'
- 'PROJECTS/api-security-scanner/frontend/package.json'
- '.github/workflows/typescript-check.yml'
jobs:
typescript-check:
name: TypeScript Type Check
runs-on: ubuntu-latest
permissions:
pull-requests: write
contents: read
defaults:
run:
working-directory: PROJECTS/api-security-scanner/frontend
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
cache-dependency-path: PROJECTS/api-security-scanner/frontend/package-lock.json
- name: Install dependencies
run: |
for i in {1..3}; do
echo "Attempt $i of 3..."
if npm install; then
echo "✅ npm install succeeded"
break
else
echo "⚠️ npm install failed, retrying in 10 seconds..."
sleep 10
fi
done
- name: Run TypeScript type checking
id: typescript_check
run: |
echo "Running TypeScript type checking..."
if npm run lint:types > typescript-output.txt 2>&1; then
echo "TYPESCRIPT_PASSED=true" >> $GITHUB_ENV
echo "✅ No TypeScript type errors found!"
echo "ERROR_COUNT=0" >> $GITHUB_ENV
else
echo "TYPESCRIPT_PASSED=false" >> $GITHUB_ENV
# Count error lines (lines that contain errors)
error_count=$(grep -c "error TS" typescript-output.txt || echo "0")
echo "ERROR_COUNT=$error_count" >> $GITHUB_ENV
echo "⚠️ TypeScript found $error_count type errors!"
fi
cat typescript-output.txt
continue-on-error: true
- name: Create TypeScript Summary
id: create_summary
if: github.event_name == 'pull_request'
run: |
{
echo '## 📝 TypeScript Type Check Results'
echo ''
if [[ "${{ env.TYPESCRIPT_PASSED }}" == "true" ]]; then
echo '### ✅ **Perfect! No TypeScript type errors found** 🎉'
echo ''
echo 'Your TypeScript code passes all strict type checking requirements!'
echo ''
echo '**What was checked:**'
echo '- Strict type checking with `exactOptionalPropertyTypes`'
echo '- No unused locals or parameters'
echo '- Proper return types and void expressions'
echo '- Module resolution and import/export syntax'
else
echo '### ❌ **TypeScript found ${{ env.ERROR_COUNT }} type errors**'
echo ''
echo 'Please review and fix the TypeScript type errors below:'
echo ''
echo '<details><summary>📋 View detailed TypeScript output</summary>'
echo ''
echo '```'
head -100 typescript-output.txt
echo '```'
echo '</details>'
echo ''
echo '**How to fix:**'
echo '1. Run `cd frontend && npm run lint:types` locally to see the type errors'
echo '2. Fix the reported TypeScript type issues'
echo '3. Ensure all variables have proper types and return types are explicit'
echo '4. Push your changes to update this PR'
fi
echo ''
echo '**Commands:**'
echo '- `cd frontend && npm run lint:types` - Run TypeScript type checking'
echo '- `cd frontend && npm run build` - Run full build with type checking'
echo '- TypeScript config: `frontend/tsconfig.app.json`'
echo ''
echo '<!-- typescript-check-comment-marker -->'
} > typescript-report.md
- name: Post PR Comment
if: github.event_name == 'pull_request'
uses: peter-evans/create-or-update-comment@v4
with:
issue-number: ${{ github.event.pull_request.number }}
body-path: PROJECTS/api-security-scanner/frontend/typescript-report.md
edit-mode: replace
- name: Exit with proper code
run: |
if [[ "${{ env.TYPESCRIPT_PASSED }}" == "false" ]]; then
echo "❌ TypeScript type checking failed. Please fix the type errors above."
exit 1
else
echo "✅ All TypeScript type checks passed!"
exit 0
fi

View File

@ -84,13 +84,6 @@ repos:
files: ^PROJECTS/advanced/ai-threat-detection/backend/
exclude: (\.venv|__pycache__|\.pytest_cache)/
# Templates
- id: ruff
name: ruff check (fullstack-template backend)
args: [--fix, --exit-non-zero-on-fix]
files: ^TEMPLATES/fullstack-template/backend/
exclude: (\.venv|__pycache__|\.pytest_cache)/
# Go golangci-lint Checks
- repo: local
@ -149,13 +142,6 @@ repos:
files: ^PROJECTS/advanced/encrypted-p2p-chat/frontend/src/
pass_filenames: false
- id: biome-fullstack-template
name: biome check (fullstack-template frontend)
entry: bash -c 'cd TEMPLATES/fullstack-template/frontend && npx @biomejs/biome check .'
language: system
files: ^TEMPLATES/fullstack-template/frontend/src/
pass_filenames: false
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:

View File

@ -3,7 +3,7 @@
enums.py
"""
from enum import Enum
from enum import Enum, StrEnum
from typing import Any
import sqlalchemy as sa
@ -46,7 +46,7 @@ class SafeEnum(sa.Enum):
raise
class Environment(str, Enum):
class Environment(StrEnum):
"""
Application environment.
"""
@ -55,7 +55,7 @@ class Environment(str, Enum):
PRODUCTION = "production"
class UserRole(str, Enum):
class UserRole(StrEnum):
"""
User roles for authorization.
"""
@ -65,7 +65,7 @@ class UserRole(str, Enum):
ADMIN = "admin"
class TokenType(str, Enum):
class TokenType(StrEnum):
"""
JWT token types.
"""
@ -73,7 +73,7 @@ class TokenType(str, Enum):
REFRESH = "refresh"
class HealthStatus(str, Enum):
class HealthStatus(StrEnum):
"""
Health check status values.
"""
@ -82,7 +82,7 @@ class HealthStatus(str, Enum):
DEGRADED = "degraded"
class ProgramStatus(str, Enum):
class ProgramStatus(StrEnum):
"""
Bug bounty program lifecycle status.
"""
@ -92,7 +92,7 @@ class ProgramStatus(str, Enum):
CLOSED = "closed"
class ProgramVisibility(str, Enum):
class ProgramVisibility(StrEnum):
"""
Bug bounty program visibility level.
"""
@ -101,7 +101,7 @@ class ProgramVisibility(str, Enum):
INVITE_ONLY = "invite_only"
class AssetType(str, Enum):
class AssetType(StrEnum):
"""
Type of asset in a bug bounty program scope.
"""
@ -113,7 +113,7 @@ class AssetType(str, Enum):
OTHER = "other"
class Severity(str, Enum):
class Severity(StrEnum):
"""
Vulnerability severity levels aligned with CVSS.
"""
@ -124,7 +124,7 @@ class Severity(str, Enum):
INFORMATIONAL = "informational"
class ReportStatus(str, Enum):
class ReportStatus(StrEnum):
"""
Vulnerability report lifecycle status.
"""

View File

@ -3,10 +3,10 @@
Application enums for type safety
"""
from enum import Enum
from enum import StrEnum
class MessageStatus(str, Enum):
class MessageStatus(StrEnum):
"""
Message delivery status
"""
@ -17,7 +17,7 @@ class MessageStatus(str, Enum):
FAILED = "failed"
class PresenceStatus(str, Enum):
class PresenceStatus(StrEnum):
"""
User presence status
"""
@ -26,7 +26,7 @@ class PresenceStatus(str, Enum):
OFFLINE = "offline"
class RoomType(str, Enum):
class RoomType(StrEnum):
"""
Chat room types
"""

View File

@ -162,7 +162,7 @@ func (c *Client) queryBatch(
req.Header.Set("Content-Type", "application/json")
req.Header.Set("User-Agent", userAgent)
resp, err := c.http.Do(req)
resp, err := c.http.Do(req) //nolint:gosec // hardcoded OSV API endpoint
if err != nil {
return nil, err
}
@ -191,7 +191,7 @@ func (c *Client) fetchVuln(
}
req.Header.Set("User-Agent", userAgent)
resp, err := c.http.Do(req)
resp, err := c.http.Do(req) //nolint:gosec // hardcoded OSV API endpoint
if err != nil {
return nil, err
}

View File

@ -67,12 +67,12 @@ func (c *Cache) Set(key string, entry *CacheEntry) error {
if _, writeErr := tmp.Write(data); writeErr != nil {
_ = tmp.Close() //nolint:errcheck
_ = os.Remove(tmp.Name()) //nolint:errcheck
_ = os.Remove(tmp.Name()) //nolint:errcheck,gosec
return writeErr
}
_ = tmp.Close() //nolint:errcheck
return os.Rename(tmp.Name(), c.path(key))
return os.Rename(tmp.Name(), c.path(key)) //nolint:gosec
}
// Touch refreshes the CachedAt timestamp without changing stored data

View File

@ -202,7 +202,7 @@ func (c *Client) doWithRetry(
}
}
resp, err := c.http.Do(req)
resp, err := c.http.Do(req) //nolint:gosec
if err != nil {
lastErr = err
continue

View File

@ -2,10 +2,10 @@
Enum definitions for the application for type safety
"""
from enum import Enum
from enum import StrEnum
class ScanStatus(str, Enum):
class ScanStatus(StrEnum):
"""
Enum for scan result status
"""
@ -15,7 +15,7 @@ class ScanStatus(str, Enum):
ERROR = "error"
class Severity(str, Enum):
class Severity(StrEnum):
"""
Enum for vulnerability severity levels
"""
@ -27,7 +27,7 @@ class Severity(str, Enum):
INFO = "info"
class TestType(str, Enum):
class TestType(StrEnum):
"""
Enum for available security test types
"""

View File

@ -448,7 +448,10 @@ func (a *ComposeAnalyzer) checkEnvironment(
if rules.IsSensitiveEnvName(varName) && varValue != "" {
if !isVariableReference(varValue) {
loc := &finding.Location{Path: a.path, Line: itemNode.Line}
loc := &finding.Location{
Path: a.path,
Line: itemNode.Line,
}
f := finding.New("CIS-4.10", "Service '"+serviceName+"' has sensitive variable '"+varName+"' with hardcoded value", finding.SeverityHigh, target).
WithDescription("Hardcoding secrets in compose files exposes them in version control.").
WithCategory(string(CategoryCompose)).

View File

@ -632,8 +632,11 @@ func TestComposeAnalyzer_AllFiles(t *testing.T) {
"Should have CRITICAL findings",
)
} else {
assert.False(t, findings.HasSeverityAtOrAbove(finding.SeverityCritical),
"Should NOT have CRITICAL findings")
assert.False(
t,
findings.HasSeverityAtOrAbove(finding.SeverityCritical),
"Should NOT have CRITICAL findings",
)
}
if tc.wantHigh {