Checklist de revision de codigo con Claude Code
Un checklist practico de revision de codigo usando Claude Code para mejorar la calidad del codigo.
Optimizando la revision de codigo con Claude Code
La revision de codigo es un proceso importante para mantener la calidad, pero la carga sobre los revisores es un desafio significativo. Aprovechando Claude Code, puedes realizar revisiones eficientes basadas en checklists sistematicos.
Verificacion de seguridad
> Revisa el codigo de este PR desde la perspectiva de seguridad.
> Verifica XSS, inyeccion SQL y vulnerabilidades de autenticacion.
// Checklist de seguridad
const securityChecks = {
// 1. Validacion de entrada
inputValidation: {
check: 'La entrada del usuario esta sanitizada',
bad: `element.innerHTML = userInput;`,
good: `element.textContent = userInput;`,
},
// 2. Inyeccion SQL
sqlInjection: {
check: 'Se usan consultas parametrizadas',
bad: `db.query(\`SELECT * FROM users WHERE id = \${userId}\`);`,
good: `db.query('SELECT * FROM users WHERE id = ?', [userId]);`,
},
// 3. Autenticacion y autorizacion
auth: {
check: 'Los endpoints de API tienen middleware de autenticacion',
bad: `app.get('/api/admin/users', handler);`,
good: `app.get('/api/admin/users', requireAuth, requireAdmin, handler);`,
},
// 4. Exposicion de informacion secreta
secrets: {
check: 'Las variables de entorno no se filtran al cliente',
bad: `const apiKey = "sk-1234567890abcdef";`,
good: `const apiKey = process.env.API_KEY;`,
},
};
Verificacion de rendimiento
// Checklist de rendimiento
const performanceChecks = [
{
item: 'No se producen consultas N+1',
bad: `
const users = await db.user.findMany();
for (const user of users) {
const posts = await db.post.findMany({ where: { userId: user.id } });
}`,
good: `
const users = await db.user.findMany({
include: { posts: true },
});`,
},
{
item: 'No hay re-renderizados innecesarios',
bad: `
function Component() {
const handler = () => doSomething();
return <Child onClick={handler} />;
}`,
good: `
function Component() {
const handler = useCallback(() => doSomething(), []);
return <Child onClick={handler} />;
}`,
},
{
item: 'Se aplica virtualizacion a listas grandes',
check: 'Listas de mas de 1000 elementos -> considerar react-virtual',
},
];
Verificacion de legibilidad y mantenibilidad
> Sugiere mejoras de legibilidad para este codigo.
> Verifica convenciones de nombres, longitud de funciones y adecuacion de comentarios.
// Puntos de verificacion de legibilidad
// 1. Longitud de funciones (ideal: menos de 30 lineas)
// No recomendado: todo el procesamiento en una sola funcion
async function processOrder(order: Order) {
// 100 lineas de procesamiento...
}
// Recomendado: dividir por responsabilidad
async function processOrder(order: Order) {
const validated = validateOrder(order);
const priced = calculateTotal(validated);
const payment = await processPayment(priced);
return createConfirmation(payment);
}
// 2. Patron de retorno anticipado
// No recomendado: anidamiento profundo
function getDiscount(user: User) {
if (user) {
if (user.isPremium) {
if (user.orders > 10) {
return 0.2;
}
return 0.1;
}
return 0.05;
}
return 0;
}
// Recomendado: retorno anticipado
function getDiscount(user: User) {
if (!user) return 0;
if (!user.isPremium) return 0.05;
if (user.orders > 10) return 0.2;
return 0.1;
}
// 3. Eliminacion de numeros magicos
// No recomendado
if (status === 3) { /* ... */ }
// Recomendado
const ORDER_STATUS = { PENDING: 1, PROCESSING: 2, COMPLETED: 3 } as const;
if (status === ORDER_STATUS.COMPLETED) { /* ... */ }
Verificacion de manejo de errores
// Puntos de verificacion de manejo de errores
// No recomendado: suprimir errores
try {
await saveData(data);
} catch (e) {
// No hacer nada
}
// Recomendado: manejo adecuado de errores
try {
await saveData(data);
} catch (error) {
logger.error('Fallo al guardar datos', { error, data: data.id });
throw new AppError('SAVE_FAILED', 'Fallo al guardar los datos', { cause: error });
}
Script de automatizacion de revision
// scripts/review-check.ts
import { execSync } from 'child_process';
interface ReviewIssue {
file: string;
line: number;
severity: 'error' | 'warning' | 'info';
message: string;
}
function checkForIssues(): ReviewIssue[] {
const issues: ReviewIssue[] = [];
const diff = execSync('git diff --cached --name-only').toString().split('\n');
for (const file of diff.filter(f => f.endsWith('.ts') || f.endsWith('.tsx'))) {
const content = execSync(`git show :${file}`).toString();
const lines = content.split('\n');
lines.forEach((line, index) => {
// Verificacion de console.log
if (line.includes('console.log') && !file.includes('scripts/')) {
issues.push({
file, line: index + 1, severity: 'warning',
message: 'Queda un console.log',
});
}
// Verificacion de TODO/FIXME
if (/\/\/\s*(TODO|FIXME|HACK)/i.test(line)) {
issues.push({
file, line: index + 1, severity: 'info',
message: 'Hay un comentario TODO/FIXME',
});
}
// Verificacion de tipo any
if (/:\s*any\b/.test(line)) {
issues.push({
file, line: index + 1, severity: 'warning',
message: 'Se esta usando el tipo any',
});
}
});
}
return issues;
}
const issues = checkForIssues();
issues.forEach(i => console.log(`[${i.severity}] ${i.file}:${i.line} - ${i.message}`));
Resumen
La revision de codigo esta estrechamente relacionada con las estrategias de testing. Con Claude Code, puedes realizar revisiones sistematicas y eficientes desde las perspectivas de seguridad, rendimiento y legibilidad. Combinandolo con las tecnicas de programacion en pareja con IA, puedes lograr tanto calidad como velocidad en las revisiones. Para las mejores practicas de revision de codigo, consulta Google Engineering Practices.
PDF gratuito: Hoja de trucos de Claude Code en 5 minutos
Solo deja tu correo y te enviaremos al instante la hoja de trucos en una página A4.
Cuidamos tus datos personales y nunca enviamos spam.
Sobre el autor
Masa
Ingeniero apasionado por Claude Code. Dirige claudecode-lab.com, un medio tecnológico en 10 idiomas con más de 2.000 páginas.
Artículos relacionados
7 plantillas de CLAUDE.md para Claude Code que puedes copiar en proyectos reales
Siete plantillas prácticas de CLAUDE.md para apps individuales, sitios de contenido, APIs, equipos y repos legacy, con errores que debes evitar.
Guia de Approval y Sandbox para Claude Code | Configuracion segura para el trabajo diario
Como dividir acciones de Claude Code en allow, ask, deny y sandbox con settings practicos, hooks y casos reales.
Guía completa para empezar con Claude Code 2026 | De cero a usarlo en tu trabajo real en 7 pasos
La guía definitiva para quienes usan Claude Code por primera vez. Desde la instalación hasta integrarlo en tu flujo de desarrollo real — con todos los tropiezos que Masa tuvo al comenzar.