Browse Source
- Change @typescript-eslint/no-explicit-any from warn to error to block builds with any types - Add type-safety-check script for automated pre-commit validation - Implement comprehensive pre-commit checks including ESLint, TypeScript compilation, and any type scanning - Include database migration status verification in pre-commit process - Provide colored output and clear guidance for type safety issues This ensures type safety is enforced at the CI level and prevents regression of any type usage.pull/152/head^2
3 changed files with 105 additions and 1 deletions
@ -0,0 +1,103 @@ |
|||
#!/bin/bash |
|||
|
|||
# Type Safety Pre-commit Check Script |
|||
# This script ensures type safety before commits by running linting and type checking |
|||
|
|||
set -e |
|||
|
|||
echo "🔍 Running Type Safety Pre-commit Checks..." |
|||
|
|||
# Colors for output |
|||
RED='\033[0;31m' |
|||
GREEN='\033[0;32m' |
|||
YELLOW='\033[1;33m' |
|||
NC='\033[0m' # No Color |
|||
|
|||
# Function to print colored output |
|||
print_status() { |
|||
echo -e "${GREEN}✅ $1${NC}" |
|||
} |
|||
|
|||
print_warning() { |
|||
echo -e "${YELLOW}⚠️ $1${NC}" |
|||
} |
|||
|
|||
print_error() { |
|||
echo -e "${RED}❌ $1${NC}" |
|||
} |
|||
|
|||
# Check if we're in the right directory |
|||
if [ ! -f "package.json" ]; then |
|||
print_error "Must run from project root directory" |
|||
exit 1 |
|||
fi |
|||
|
|||
# Step 1: Run ESLint with TypeScript rules |
|||
print_status "Running ESLint TypeScript checks..." |
|||
if npm run lint > /dev/null 2>&1; then |
|||
print_status "ESLint passed - no type safety issues found" |
|||
else |
|||
print_error "ESLint failed - type safety issues detected" |
|||
echo "" |
|||
echo "Running lint with details..." |
|||
npm run lint |
|||
echo "" |
|||
print_error "Please fix the above type safety issues before committing" |
|||
exit 1 |
|||
fi |
|||
|
|||
# Step 2: Run TypeScript type checking |
|||
print_status "Running TypeScript type checking..." |
|||
if npm run type-check > /dev/null 2>&1; then |
|||
print_status "TypeScript compilation passed" |
|||
else |
|||
print_error "TypeScript compilation failed" |
|||
echo "" |
|||
echo "Running type check with details..." |
|||
npm run type-check |
|||
echo "" |
|||
print_error "Please fix the above TypeScript errors before committing" |
|||
exit 1 |
|||
fi |
|||
|
|||
# Step 3: Check for any remaining 'any' types |
|||
print_status "Scanning for any remaining 'any' types..." |
|||
ANY_COUNT=$(grep -r "any" src/ --include="*.ts" --include="*.vue" | grep -v "// eslint-disable" | grep -v "eslint-disable-next-line" | wc -l) |
|||
|
|||
if [ "$ANY_COUNT" -eq 0 ]; then |
|||
print_status "No 'any' types found in source code" |
|||
else |
|||
print_warning "Found $ANY_COUNT instances of 'any' type usage" |
|||
echo "" |
|||
echo "Instances found:" |
|||
grep -r "any" src/ --include="*.ts" --include="*.vue" | grep -v "// eslint-disable" | grep -v "eslint-disable-next-line" || true |
|||
echo "" |
|||
print_error "Please replace 'any' types with proper TypeScript types before committing" |
|||
exit 1 |
|||
fi |
|||
|
|||
# Step 4: Verify database migration status |
|||
print_status "Checking database migration status..." |
|||
if grep -r "databaseUtil" src/ --include="*.ts" --include="*.vue" > /dev/null 2>&1; then |
|||
print_warning "Found databaseUtil imports - ensure migration is complete" |
|||
echo "" |
|||
echo "Files with databaseUtil imports:" |
|||
grep -r "databaseUtil" src/ --include="*.ts" --include="*.vue" | head -5 || true |
|||
echo "" |
|||
print_warning "Consider completing database migration to PlatformServiceMixin" |
|||
else |
|||
print_status "No databaseUtil imports found - migration appears complete" |
|||
fi |
|||
|
|||
# All checks passed |
|||
echo "" |
|||
print_status "All type safety checks passed! 🎉" |
|||
print_status "Your code is ready for commit" |
|||
echo "" |
|||
echo "📚 Remember to follow the Type Safety Guidelines:" |
|||
echo " - docs/typescript-type-safety-guidelines.md" |
|||
echo " - Use proper error handling patterns" |
|||
echo " - Leverage existing type definitions" |
|||
echo " - Run 'npm run lint-fix' for automatic fixes" |
|||
|
|||
exit 0 |
Loading…
Reference in new issue