Refactoring asistido mediante la detección automática de code smells
Autor Principal: | |
---|---|
Otros autores o Colaboradores: | |
Formato: | Tesis |
Lengua: | español |
Datos de publicación: |
2014
|
Temas: | |
Acceso en línea: | Consultar en el Cátalogo |
Descripción Física: | 90 p. : il. + 1CD-ROM |
Tabla de Contenidos:
- 1. Introducción
- 1.1. Contexto
- 1.2. Motivación
- 1.3. Objetivo
- 1.4. Contribuciones
- 1.5. Organización de la tesis
- 1.6. Convenciones
- 2. Trabajos relacionados
- 2.1. Background
- 2.1.2. Refactoring browser
- 2.1.3. Code smells y análisis de código
- 2.2. Trabajos de investigación
- 2.2.1, Refactorización basada en búsqueda: Code-Imp
- 2.2.2. Estrategias de detección: reglas basadas en métricas para la detección de fallas de diseño
- 2.2.3. QA en Java mediante la detección de Code Smells
- 2.3. Herramientas
- 2.3.1. IntelliJ IDEA
- 2.3.2. iPlasma
- 2.3.3. inFussion e inCode
- 2.3.4. Cincom VisualWorks
- 3. Arquitectura debase
- 3.1. El framework de refactoring
- 3.1.1. Uso de la herramienta
- 3.1.2. Creación de un nuevo refactoring
- 3.1.3. Refactorings
- 3.1.4. Condiciones
- 3.1.5. Ejecución de las transformaciones: los cambios y el modelo
- 3.1.6. Reescritura de código
- 3.1.7. Patrones de diseño
- 3.2. Small Lint
- 3.2.1. El framework de reglas lint
- 3.2.2. Ejemplo: Refused Bequest
- 3.2.3. Ejemplo: Long Class
- 3.2.4. Ejecución de las reglas
- 3.2.5. Patrones de diseño
- 4. Marco de trabajo
- 4.1. Definición de Code Smell
- 4.2. Relación entre code critics de Pharo y code smells
- 4.3. Code Smells catalogados
- 4.3.1. Dead Code
- 4.3.2. Long Parameter List
- 4.3.3. Large Class
- 4.3.4. Long method
- 4.3.5. Messege Chain
- 4.3.6. Duplicate Code
- 4.3.7. Temporary Field
- 4.4. Code Smells no catalogados
- 4.4.1. Inconsistent method classification
- 4.4.2. Escessive inheritance depth
- 4.4.3. Method defined in all subclasses but not in superclass
- 4.4.4. Rewrite super messages to self messages when both refer to same method
- 4.4.5. Refer to class name instead of self class
- 4.4.6. Variable is only assigned a single literal value
- 4.4.7. Resumen de asociación de Code Critics con Refactorings predefinidos
- 4.5. Code smells catalogados (Fowler) no implementados en Pharo
- 4.5.1. Duplicate Code
- 4.5.2. Divergent Change
- 4.5.3. Shotgun Surgery
- 4.5.4. Feature Envy
- 4.5.5. Data Clumps
- 4.5.6. Primitive Obsession
- 4.5.7. Switch Statements
- 4.5.8. Parallel Inheritance Hierarchies
- 4.5.9. Lazy Class
- 4.5.10. Speculative Generality
- 4.5.11. Middleman
- 4.5.12. Innappropriate Intimacy
- 4.5.13. Alternative Class with different Interfaces
- 4.5.14. Data Class
- 4.5.15. Refused Bequest
- 4.5.16. Comments
- 4.5.17. Resumen de Code Smells no detectados mediante Code Critics
- 5. Diseño de la herramienta
- 5.1. Diseño
- 5.1.1. Asociación de code critics con refactorings
- 5.1.2. Aplicación de un refactoring a partir del resultado de la ejecución de un critic
- 5.1.3. Precondiciones
- 5.1.4. Parámetros adicionales
- 5.1.5. Integración con el Class Browser
- 5.2. Implementacion de asociaciones entre code critics y refacto
- 5.2.1. Remove Class Not referenced
- 5.2.2. Push Down Method with Refused Bequest
- 5.2.3. Replace Variable Only Assigned a Single Literal Value with Query
- 5.2.4. Extract when Long Methd
- 5.3. Diagrama de clases de la herramienta
- 6. Uso de la herramienta
- 6.1. Ejecución de code critics para una clase
- 6.2. Menú de refactoring en Critic Browser
- 6.3. Diálogo de refactoring
- 6.4. Ejemplo de uso
- 7. Conclusiones y Trabajos Futuros
- 7.1. Conclusiones
- 7.2. Contribuciones
- 7.3. Limitaciones
- 7.4. Trabajos Futuros
- 8. Bibliografía