Skip to content
IRC-CodingIRC-Coding
Static Code AnalysisESLintSonarQubePylintSpotBugsCI/CDCalidad de software

Herramientas de Static Code Analysis: ESLint, SonarQube, Pylint

Análisis automático de código con ESLint, SonarQube, Pylint y SpotBugs. Integración CI/CD y mejores prácticas.

S

schutzgeist

4 min read
Herramientas de Static Code Analysis: ESLint, SonarQube, Pylint

Herramientas de Análisis Estático de Código

Las herramientas de análisis estático de código analizan el código fuente sin ejecutarlo para encontrar automáticamente errores, vulnerabilidades de seguridad y code smells.

De un Vistazo

El análisis estático de código (SCA) examina el código sin ejecutarlo. Herramientas como ESLint (JS), Pylint (Python) y SonarQube (multi-lenguaje) detectan automáticamente bugs, problemas de seguridad y code smells. La integración en CI/CD funciona como quality gate.

Descripción Técnica Completa

Análisis Estático de Código es el examen automatizado del código fuente sin ejecución. Las herramientas verifican sintaxis, semántica, estándares de codificación, vulnerabilidades de seguridad y métricas de calidad. El análisis se realiza mediante coincidencia de patrones, análisis de flujo de datos e interpretación abstracta. Las herramientas SCA se integran típicamente en pipelines CI/CD y pueden funcionar como quality gate, impidiendo que código de mala calidad se fusione.

Por Qué Análisis Estático de Código

  • Automatización: Encuentra errores más rápido que revisiones manuales
  • Consistencia: Mantiene estándares de codificación uniformes en el equipo
  • Seguridad: Detecta vulnerabilidades antes de producción
  • Curva de Aprendizaje: Los desarrolladores nuevos aprenden a través del feedback de la herramienta
  • Métricas: Calidad de código medible a lo largo del tiempo

Herramientas Principales

HerramientaLenguajeTipoCaracterística
ESLintJavaScript/TSLinterAltamente configurable, sistema de plugins
PrettierJavaScript/TSFormatterOpinado, formatea código
PylintPythonLinterConforme a PEP-8, exhaustivo
BlackPythonFormatterSin compromiso, PEP-8
SonarQubeMultiPlataformaDashboard de calidad de código
SpotBugsJavaLinterEncuentra bugs en Java
CheckstyleJavaLinterEstándares de codificación
RuboCopRubyLinterRuby Style Guide

ESLint (JavaScript/TypeScript)

Instalación

npm install --save-dev eslint
npx eslint --init

Configuración

// .eslintrc.js
module.exports = {
  env: {
    browser: true,
    es2021: true,
    node: true,
  },
  extends: [
    'eslint:recommended',
    'plugin:@typescript-eslint/recommended',
    'plugin:prettier/recommended',
  ],
  parser: '@typescript-eslint/parser',
  plugins: ['@typescript-eslint'],
  rules: {
    'no-unused-vars': 'error',
    'no-console': 'warn',
    '@typescript-eslint/no-explicit-any': 'warn',
  },
};

Errores de Ejemplo

// Error ESLint: no-unused-vars
const unused = 42;

// Error ESLint: no-console
console.log('Debug output');

// Error ESLint: prefer-const
var x = 5;

Pylint (Python)

Instalación

pip install pylint

Configuración

# .pylintrc
[MASTER]
disable=C0111,C0103

[FORMAT]
max-line-length=100

[BASIC]
good-names=i,j,k,ex,Run,_

Ejecución

pylint mymodule.py

SonarQube (Multi-Lenguaje)

Instalación (Docker)

docker run -d --name sonarqube -p 9000:9000 sonarqube

Configuración

# SonarQube Scanner
sonar-scanner \
  -Dsonar.projectKey=my-project \
  -Dsonar.sources=src \
  -Dsonar.host.url=http://localhost:9000

Quality Gate

  • Coverage: > 80%
  • Duplications: < 3%
  • Security Rating: A
  • Reliability Rating: A

Integración en CI/CD

GitHub Actions

name: Code Quality

on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: '18'
      - run: npm ci
      - run: npm run lint
      - run: npm run test:coverage

GitLab CI

code_quality:
  image: sonarsource/sonar-scanner-cli
  script:
    - sonar-scanner
  only:
    - merge_requests
    - main

Mejores Prácticas

  • Integración Temprana: Implementa SCA desde el inicio del proceso de desarrollo
  • Reglas Personalizadas: Adapta las reglas al proyecto en lugar de usar los estándares por defecto
  • Auto-Fix: Aprovecha la corrección automática para problemas simples
  • Quality Gates: Bloquea la construcción ante errores críticos
  • Actualizaciones Regulares: Mantén las herramientas y reglas actualizadas

Puntos Clave para Exámenes

  • El análisis estático de código examina el código sin ejecutarlo
  • Herramientas principales: ESLint (JS), Pylint (Python), SonarQube (Multi-lenguaje)
  • Linter vs Formatter: El linter verifica, el formatter formatea
  • Integración CI/CD como quality gate
  • Automatización de verificaciones de calidad de código

FAQ

1. ¿Qué es el análisis estático de código?

Examen automatizado del código fuente sin ejecución para encontrar errores y code smells.

2. ¿Cuál es la diferencia entre linter y formatter?

El linter verifica errores y code smells, mientras que el formatter formatea el código automáticamente.

3. ¿Qué es ESLint?

Linter para JavaScript/TypeScript con sistema de plugins y configuración extensiva.

4. ¿Qué es Pylint?

Linter para Python que verifica conformidad con PEP-8 y calidad de código.

5. ¿Qué es SonarQube?

Plataforma multi-lenguaje para calidad de código con dashboard y quality gates.

6. ¿Cómo se integra SCA en CI/CD?

Incluye el linter o scanner en la pipeline y bloquea la construcción ante errores.

7. ¿Qué es un quality gate?

Umbrales que deben cumplirse para que el código se pueda fusionar.

8. ¿Qué es Prettier?

Formatter opinado para JavaScript/TypeScript que formatea código automáticamente.

9. ¿Qué es Black?

Formatter inflexible para Python, conforme a PEP-8.

10. ¿SCA vs Tests?

SCA verifica la estructura del código, los tests verifican el comportamiento. Ambos se complementan.

11. ¿SCA vs Code Review?

SCA es automatizado, el code review es manual y verifica la arquitectura.

12. ¿Cuándo usar SCA?

Temprano en el proyecto, antes de commits y en la pipeline CI/CD.

13. ¿Se pueden personalizar las reglas?

Sí, adapta las reglas al proyecto y al equipo en lugar de mantener los estándares por defecto.

14. ¿Qué es SpotBugs?

Linter para Java que encuentra bugs típicos de Java y vulnerabilidades de seguridad.

15. ¿Cuál es el rendimiento de SCA?

Rápido, de segundos a minutos. Se puede paralelizar.

Continúa en la Ruta de Aprendizaje de Calidad de Software

El siguiente artículo en la ruta de aprendizaje de calidad de software cubre Calidad de Software y Mantenibilidad, que explora cómo lograr código mantenible a través de buena arquitectura, documentación y tests.

Fuentes

  1. https://eslint.org/
  2. https://pylint.pycqa.org/
  3. https://www.sonarqube.org/

Recomendaciones de Libros sobre Calidad de Software

Si deseas profundizar en análisis estático de código, herramientas y calidad de software, te recomendamos los siguientes libros:

Keine Bücher für Kategorie "software-engineering" gefunden.

Volver al blog
Share:

Entradas relacionadas