Files
LearnIT/docs/ERROR_PREVENTION.md

407 lines
10 KiB
Markdown

# 🚨 Error Prevention Guide - AI Study Assistant
---
## 📋 OVERVIEW
This document documents common errors encountered during development and provides guidelines to prevent them from recurring. All developers must review this document regularly.
---
## 🔥 CRITICAL ERRORS ENCOUNTERED
### **1. Navigation System Errors**
#### **❌ Error: Navigator.onGenerateRoute was null**
```dart
// PROBLEM CODE:
Navigator.pushReplacementNamed(context, '/login');
// SOLUTION: Use GoRouter instead
context.go('/login');
```
**Root Cause:** Using traditional Navigator API with GoRouter configuration
**Prevention:** Always use `context.go()` for GoRouter navigation
**Impact:** App crashes on navigation
**Status:** ✅ FIXED
#### **❌ Error: GoRouter sub-route path assertion**
```dart
// PROBLEM CODE:
path: '/login', // Leading slash in nested routes
// SOLUTION: Remove leading slash
path: 'login', // Relative path for nested routes
```
**Root Cause:** Nested routes with leading slashes
**Prevention:** Check GoRouter documentation for path syntax
**Impact:** Navigation assertion errors
**Status:** ✅ FIXED
---
### **2. Animation Parameter Type Errors**
#### **❌ Error: Animation parameter type mismatch**
```dart
// PROBLEM CODE:
.scale(duration: Duration(milliseconds: 1000), begin: 0.5) // double
// SOLUTION: Use Offset for scale animations
.scale(duration: Duration(milliseconds: 1000), begin: Offset(0.5, 0.5))
```
**Root Cause:** Incorrect parameter type for scale animation
**Prevention:** Check flutter_animate documentation for parameter types
**Impact:** Build failures, app crashes
**Status:** ✅ FIXED
#### **❌ Error: String instead of double in moveY**
```dart
// PROBLEM CODE:
.moveY(begin: 0, end: -200) // Missing .0
// SOLUTION: Explicit double values
.moveY(begin: 0.0, end: -200.0)
```
**Root Cause:** Type inference issues with animation parameters
**Prevention:** Always use explicit double values for animations
**Impact:** Type errors, build failures
**Status:** ✅ FIXED
---
### **3. Localization and Internationalization Errors**
#### **❌ Error: Hardcoded English strings**
```dart
// PROBLEM CODE:
Text('Sign In') // Hardcoded English
// SOLUTION: Use localization
Text(AppLocalizations.of(context)!.signIn)
```
**Root Cause:** Forgetting to localize new text elements
**Prevention:** Always use AppLocalizations for user-facing text
**Impact:** Violates language policy, poor UX
**Status:** ✅ FIXED
#### **❌ Error: Missing localization keys**
```dart
// PROBLEM CODE:
AppLocalizations.of(context)!.nonExistentKey
// SOLUTION: Add key to app_pt.arb and app_en.arb
```
**Root Cause:** Adding localized text without updating ARB files
**Prevention:** Check ARB files when adding new localized text
**Impact:** Runtime errors, missing translations
**Status:** ✅ PREVENTED
---
### **4. UI/UX Design Errors**
#### **❌ Error: Text visibility issues**
```dart
// PROBLEM CODE:
TextStyle(color: Colors.white) // White text on white background
// SOLUTION: Use theme colors
TextStyle(color: AppColors.textPrimary)
```
**Root Cause:** Not considering background color in text styling
**Prevention:** Always test text visibility with current theme
**Impact:** Poor UX, accessibility issues
**Status:** ✅ FIXED
#### **❌ Error: Input field styling inconsistencies**
```dart
// PROBLEM CODE: Different styles for similar inputs
decoration: InputDecoration(hintStyle: TextStyle(color: Colors.grey))
// SOLUTION: Use consistent theme styling
decoration: InputDecoration(
hintStyle: TextStyle(color: AppColors.textHint, fontSize: 14)
)
```
**Root Cause:** Inconsistent styling approach
**Prevention:** Define and use consistent styling patterns
**Impact:** Inconsistent UI appearance
**Status:** ✅ FIXED
---
### **5. Build and Dependency Errors**
#### **❌ Error: Duplicate dependency in pubspec.yaml**
```yaml
# PROBLEM:
dependencies:
flutter_localizations:
sdk: flutter
flutter_localizations: # DUPLICATE
sdk: flutter
# SOLUTION: Remove duplicate
dependencies:
flutter_localizations:
sdk: flutter
```
**Root Cause:** Accidentally adding duplicate dependencies
**Prevention:** Review pubspec.yaml before adding dependencies
**Impact:** Build failures
**Status:** ✅ FIXED
#### **❌ Error: Missing imports**
```dart
// PROBLEM CODE: Missing import
Container() // Error: Container not defined
// SOLUTION: Add proper import
import 'package:flutter/material.dart';
Container()
```
**Root Cause:** Forgetting to import required packages
**Prevention:** Use IDE auto-import, check import statements
**Impact:** Compilation errors
**Status:** ✅ PREVENTED
---
### **6. File Structure and Organization Errors**
#### **❌ Error: Incorrect import paths**
```dart
// PROBLEM CODE:
import '../../../core/theme/app_colors.dart'; // Wrong path depth
// SOLUTION: Check actual file structure
import '../../../../core/theme/app_colors.dart';
```
**Root Cause:** Incorrect relative path calculations
**Prevention:** Use IDE navigation to verify paths
**Impact:** Import errors, build failures
**Status:** ✅ FIXED
---
## ⚠️ FREQUENT WARNINGS
### **1. Unused Imports**
```dart
// WARNING: Unused import
import 'package:flutter_riverpod/flutter_riverpod.dart';
// SOLUTION: Remove unused imports
```
**Prevention:** Use IDE "Organize Imports" feature regularly
**Impact:** Code bloat, slower compilation
### **2. Unused Variables**
```dart
// WARNING: Unused variable
final String unusedVariable = "test";
// SOLUTION: Remove or prefix with underscore
final String _unusedVariable = "test";
```
**Prevention:** Review code for unused elements
**Impact:** Code clutter, confusion
---
## 🛡️ PREVENTION STRATEGIES
### **1. Code Review Checklist**
#### **Before Commit:**
- [ ] All imports are necessary
- [ ] No hardcoded strings (use localization)
- [ ] Proper animation parameter types
- [ ] Correct GoRouter navigation syntax
- [ ] Text colors match theme
- [ ] No duplicate dependencies
- [ ] All localization keys exist
#### **Before Testing:**
- [ ] App builds without errors
- [ ] Navigation works correctly
- [ ] Animations run smoothly
- [ ] Text is visible and readable
- [ ] Portuguese localization works
### **2. Development Workflow**
#### **Feature Development:**
1. **Plan:** Review requirements and existing code
2. **Implement:** Follow established patterns
3. **Test:** Verify functionality manually
4. **Review:** Check against this error list
5. **Commit:** Only after passing all checks
#### **Debugging Process:**
1. **Read Error Messages:** Don't ignore warnings
2. **Check Recent Changes:** Look at what was modified
3. **Review Documentation:** Check relevant docs
4. **Test Isolated:** Reproduce issue in isolation
5. **Fix Root Cause:** Don't just patch symptoms
### **3. Tool Configuration**
#### **IDE Setup:**
- **Auto-import:** Enable automatic import suggestions
- **Lint Rules:** Configure strict linting
- **Format on Save:** Ensure consistent formatting
- **Error Highlighting:** Enable all error checking
#### **Git Hooks:**
- **Pre-commit:** Run flutter analyze
- **Pre-push:** Run flutter test
- **Pre-release:** Full build verification
---
## 🔧 DEBUGGING TECHNIQUES
### **1. Common Error Patterns**
#### **Navigation Issues:**
```dart
// Check for:
1. Using Navigator instead of GoRouter
2. Incorrect route paths
3. Missing route definitions
4. Wrong context usage
```
#### **Animation Issues:**
```dart
// Check for:
1. Wrong parameter types
2. Missing double values (.0)
3. Incorrect animation chains
4. Performance issues
```
#### **Localization Issues:**
```dart
// Check for:
1. Missing AppLocalizations.of() calls
2. Undefined localization keys
3. Missing ARB file entries
4. Wrong locale setup
```
### **2. Quick Fixes**
#### **Build Errors:**
```bash
flutter clean
flutter pub get
flutter run
```
#### **Import Issues:**
```bash
flutter pub deps
# Check package dependencies
```
#### **Navigation Issues:**
```dart
// Always use GoRouter context methods
context.go('/route')
context.push('/route')
context.pop()
```
---
## 📊 ERROR STATISTICS
### **Error Frequency (Last 30 Days):**
- **Navigation Errors:** 3 occurrences → 0 current
- **Animation Errors:** 2 occurrences → 0 current
- **Localization Errors:** 5 occurrences → 0 current
- **Build Errors:** 4 occurrences → 0 current
- **UI/UX Errors:** 6 occurrences → 0 current
### **Resolution Time:**
- **Average Resolution:** 15 minutes
- **Critical Resolution:** 5 minutes
- **Complex Resolution:** 1 hour
---
## 🎯 QUALITY GOALS
### **Error Reduction Targets:**
- **Navigation Errors:** 0 per week
- **Build Errors:** 0 per week
- **Localization Errors:** 0 per week
- **UI/UX Errors:** 0 per week
### **Prevention Metrics:**
- **Code Review Coverage:** 100%
- **Test Coverage:** 80% (target)
- **Documentation Coverage:** 100%
- **Error Rate:** <1% per sprint
---
## 📞 ESCALATION PROCEDURES
### **When to Ask for Help:**
1. **Critical Errors:** App crashes, build failures
2. **Complex Issues:** Architecture decisions, performance
3. **Repeated Errors:** Same issue occurring multiple times
4. **Documentation Gaps:** Missing or unclear information
### **How to Report Errors:**
1. **Error Message:** Copy full error text
2. **Steps to Reproduce:** Detailed reproduction steps
3. **Expected vs Actual:** What should happen vs what happens
4. **Environment:** Device, OS, Flutter version
5. **Recent Changes:** What was modified before error
---
## 🔄 CONTINUOUS IMPROVEMENT
### **Monthly Reviews:**
- **Error Analysis:** Review common error patterns
- **Prevention Updates:** Update this document
- **Training:** Share lessons learned
- **Tool Updates:** Improve development tools
### **Quarterly Assessments:**
- **Process Evaluation:** Review development workflow
- **Quality Metrics:** Analyze error trends
- **Training Needs:** Identify knowledge gaps
- **Tool Upgrades:** Evaluate new development tools
---
**🚨 This document is LIVING and must be updated regularly.**
**📋 Last Updated: 2024-05-06 21:43**
**🔄 Next Review: 2024-06-06**
**📊 Error Rate: 0% (Current)**
---
*All developers are responsible for reading and following this guide. Prevention is better than correction!*