83 lines
3.2 KiB
Bash
Executable File
83 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# scripts/ci/lint.sh - Проверка качества кода
|
|
|
|
set -e
|
|
|
|
echo "🔍 Running code quality checks..."
|
|
|
|
# Проверка Python кода (Backend)
|
|
echo "📦 Checking Python code quality..."
|
|
if [ -d "backend" ]; then
|
|
echo " • Running flake8 for Python linting..."
|
|
docker run --rm -v "$(pwd)/backend:/app" -w /app python:3.11-slim bash -c "
|
|
pip install flake8 black isort > /dev/null 2>&1
|
|
echo ' - flake8 check:'
|
|
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics || echo ' ⚠️ flake8 issues found'
|
|
echo ' - black format check:'
|
|
black --check . || echo ' ⚠️ black formatting issues found'
|
|
echo ' - isort import check:'
|
|
isort --check-only . || echo ' ⚠️ import sorting issues found'
|
|
"
|
|
fi
|
|
|
|
# Проверка TypeScript/JavaScript кода (Frontend)
|
|
echo "🌐 Checking TypeScript/JavaScript code quality..."
|
|
if [ -d "frontend/linktree-frontend" ]; then
|
|
echo " • Running ESLint for TypeScript/JavaScript..."
|
|
docker run --rm -v "$(pwd)/frontend/linktree-frontend:/app" -w /app node:20-alpine sh -c "
|
|
npm install --silent > /dev/null 2>&1
|
|
echo ' - ESLint check:'
|
|
npm run lint || echo ' ⚠️ ESLint issues found'
|
|
echo ' - TypeScript check:'
|
|
npm run type-check || echo ' ⚠️ TypeScript issues found'
|
|
"
|
|
fi
|
|
|
|
# Проверка Docker файлов
|
|
echo "🐳 Checking Docker files..."
|
|
if command -v hadolint > /dev/null 2>&1; then
|
|
echo " • Running hadolint for Dockerfile..."
|
|
find . -name "Dockerfile*" -exec hadolint {} \; || echo " ⚠️ Dockerfile issues found"
|
|
else
|
|
echo " • Hadolint not available, skipping Dockerfile check"
|
|
fi
|
|
|
|
# Проверка YAML файлов
|
|
echo "📄 Checking YAML files..."
|
|
if command -v yamllint > /dev/null 2>&1; then
|
|
echo " • Running yamllint..."
|
|
find . -name "*.yml" -o -name "*.yaml" | xargs yamllint || echo " ⚠️ YAML issues found"
|
|
else
|
|
echo " • yamllint not available, skipping YAML check"
|
|
fi
|
|
|
|
# Проверка Markdown файлов
|
|
echo "📝 Checking Markdown files..."
|
|
if [ -f "README.md" ]; then
|
|
echo " • Checking README.md structure..."
|
|
if grep -q "# " README.md; then
|
|
echo " ✅ README.md has proper headers"
|
|
else
|
|
echo " ⚠️ README.md missing proper headers"
|
|
fi
|
|
fi
|
|
|
|
# Проверка безопасности зависимостей
|
|
echo "🔐 Checking dependencies security..."
|
|
if [ -f "frontend/linktree-frontend/package.json" ]; then
|
|
echo " • Running npm audit..."
|
|
docker run --rm -v "$(pwd)/frontend/linktree-frontend:/app" -w /app node:20-alpine sh -c "
|
|
npm install --silent > /dev/null 2>&1
|
|
npm audit --audit-level moderate || echo ' ⚠️ npm security issues found'
|
|
"
|
|
fi
|
|
|
|
if [ -f "backend/requirements.txt" ]; then
|
|
echo " • Running safety check for Python..."
|
|
docker run --rm -v "$(pwd)/backend:/app" -w /app python:3.11-slim bash -c "
|
|
pip install safety > /dev/null 2>&1
|
|
safety check -r requirements.txt || echo ' ⚠️ Python security issues found'
|
|
" || echo " ⚠️ Safety check failed"
|
|
fi
|
|
|
|
echo "✅ Code quality checks completed!" |