Amazon CodeGuru Reviewer

Amazon CodeGuru Reviewer encuentra problemas en el código Java y Python y brinda recomendaciones para mejorar su código. Por ejemplo, CodeGuru Reviewer detecta vulnerabilidades de seguridad, secretos, fugas de recursos, problemas de simultaneidad, validación de entradas incorrectas y discrepancias con las prácticas recomendadas para el uso de las API y los SDK de AWS. Para comenzar a revisar el código, puede asociar los repositorios de código existentes en GitHub, GitHub Enterprise, Bitbucket o AWS CodeCommit con CodeGuru.

Detección de seguridad

CodeGuru Reviewer ayuda a mejorar la seguridad del código y brinda recomendaciones basadas en vulnerabilidades comunes (OWASP Top 10) y las prácticas recomendadas de seguridad interna de AWS. Utiliza razonamiento automatizado para analizar el flujo de datos de la fuente al destino y en varias funciones para detectar vulnerabilidades de seguridad difíciles de encontrar. El detector de seguridad de CodeGuru Reviewer admite desde Java 8 hasta Java 11, así como también Python 3 y versiones superiores. Se puede utilizar para detectar problemas de seguridad del código como los siguientes:

  1. OWASP Top 10: comprueba los principales riesgos de seguridad de las aplicaciones web, como controles de acceso rotos, inyecciones y errores en la integridad de los datos.
  2. Prácticas recomendadas para la seguridad de la API de AWS: comprueban la seguridad de la API de Amazon Elastic Compute Cloud y AWS Key Management Service.
  3. Prácticas recomendadas para la seguridad de AWS (la criptografía de AWS se implementa según los estándares de Amazon): aplican la experiencia en seguridad interna de Amazon a su código.
  4.  Prácticas recomendadas para las bibliotecas criptográficas de Java: verifican si Javax.Crypto.Cipher se inició y llamó de manera correcta.
  5. Prácticas recomendadas para bibliotecas criptográficas de Python: verifican si se utilizan las versiones correctas de las funciones hash y los algoritmos criptográficos de Python.
  6. Aplicaciones web seguras: comprueban los problemas de seguridad relacionados con las aplicaciones, como las inyecciones de LDAP.
  7. Fugas de información sensible: se comprueba si hay alguna fuga de información personal o sensible (por ejemplo, registro de credenciales de cuentas de AWS en texto sin formato).
  8. Validación de entradas: se comprueba si hay datos con formatos erróneos o malintencionados de orígenes que no son de confianza.
  9. Inyección de registros: protege de las vulnerabilidades de tipo Log4j mediante la comprobación de que el código evite correctamente las entradas de registro falsificadas o la inyección de contenido malicioso en los registros

Puede dirigirse a la consola de Amazon CodeGuru y ejecutar un análisis de seguridad en todo el repositorio o integrarlo con CI/CD a través de GitHub Actions.

Image under Security detection

Detección de secretos

El detector de secretos de CodeGuru Reviewer utiliza análisis basados en machine learning para detectar secretos codificados de forma rígida en repositorios o archivos de configuración, lo que incluye contraseñas, claves de API, claves de SSH, tokens de acceso, cadenas de conexión de bases de datos y tokens web JSON. Como parte de CodeGuru Reviewer, el detector de secretos es un mecanismo automatizado que comprueba el código en busca de secretos y proporciona pasos interactivos para protegerlos mediante AWS Secrets Manager. También puede identificar claves específicas generadas por los proveedores de API más comunes, incluidos AWS, Atlassian, GitHub, Salesforce, HubSpot y Stripe. Para obtener una lista de secretos, visite la documentación.

Detección de secretos

Calidad del código

CodeGuru Reviewer identifica los problemas de calidad del código y permite al equipo de desarrollo mantener un alto nivel de estándares de codificación en el proceso de desarrollo de software:

  • Prácticas recomendadas de AWS: uso correcto de las API de AWS (por ejemplo, sondeo, paginación) 
  • Prácticas recomendadas de Java y Python: uso correcto de las características comunes del lenguaje y de la biblioteca de Java y Python
  • Simultaneidad: detección de la falta de sincronización que resulta en una funcionalidad incorrecta o en una sincronización excesiva, lo que produce problemas de rendimiento 
  • Inconsistencia: análisis de los patrones de codificación dentro de un repositorio y ayuda para detectar cuando hay una anomalía que se aleja del patrón estándar 
  • Mantenimiento del código: identificación de las complejidades del código o cualquier particularidad del código fuente que dificulte su mantenimiento
  • Fuga de recursos: manejo adecuado de los recursos (por ejemplo, liberación de las conexiones de la base de datos)
  • Prácticas recomendadas de codificación habituales: comprobación de los parámetros y búsqueda de las líneas de código que podrían generar errores (por ejemplo: olvidarse de comprobar si un objeto es nulo antes de utilizarlo, reasignar un objeto sincronizado u olvidarse de inicializar una variable a lo largo de una ruta de excepción)
  • Clonación de código: identificación de códigos duplicados que se pueden consolidar para lograr un mejor mantenimiento de código
Calidad del código

Recomendaciones automatizadas

Existen dos tipos diferentes de revisiones de código que CodeGuru Reviewer puede realizar para brindar recomendaciones: revisiones de código progresivas y completas de repositorios. 

Revisiones de código progresivas 
Las revisiones de código progresivas se crean de forma automática cuando se crea una solicitud de extracción de un repositorio asociado. Estas revisiones de código analizan el código modificado en una solicitud de extracción. CodeGuru Reviewer también brinda un panel de solicitud de extracción que enumera información para todas las revisiones de código (por ejemplo, el estado de la revisión del código, la cantidad de líneas del código analizadas y la cantidad de recomendaciones). El precio mensual estándar de CodeGuru Reviewer incluye el análisis de la revisión de código progresiva para los repositorios incorporados.

Recomendaciones automatizadas

Revisiones de código de análisis completos de repositorios
Gracias a CodeGuru Reviewer, puede obtener recomendaciones de revisión de código basadas en ML para todas las líneas de código de los repositorios asociados en una ramificación de código específica. Puede ejecutar análisis completos del repositorio para obtener recomendaciones de revisión del código durante la migración del mismo, la debida diligencia del código y las iniciativas periódicas de mantenimiento del código. En la consola de CodeGuru, puede dirigirse a la pestaña “Repository Analysis” (Análisis de repositorio) en la página “Code Reviews” (Revisiones de código) para iniciar un análisis nuevo de un repositorio completo. El nuevo modelo de precios basado en el tamaño de los repositorios incluye dos análisis completos de repositorios. Para obtener más información, consulte la página de precios de CodeGuru.

Revisiones de código de análisis completos de repositorios
Revisiones de código

Puede ver todas las revisiones de código en la página de la consola “Revisiones de código” (en la sección del revisor). La página enumera toda la información de las revisiones de código, como el estado de la revisión de código, el repositorio, la cantidad de recomendaciones, etc. Puede hacer clic en la revisión de código completada correctamente para ver detalles de recomendaciones, buscar recomendaciones y consultar la cantidad de líneas analizadas. Además, puede realizar comentarios sobre las recomendaciones de CodeGuru si hace clic en el pulgar hacia arriba o el pulgar hacia abajo situados debajo de la recomendación.

Integración de CI/CD a GitHub Actions

Una experiencia de CI/CD para CodeGuru Reviewer permite ejecutar el análisis de la calidad y la seguridad del código como un paso dentro del flujo de trabajo de CI mediante GitHub Actions. Puede configurarlo para que se ejecute y proporcione recomendaciones en una ejecución pull, push o programada de la canalización. Después de ejecutar un análisis de CodeGuru Reviewer a través de CI/CD, puede ver las recomendaciones de calidad y de seguridad del código en la consola de CodeGuru Reviewer o en la interfaz de usuario de GitHub. Con la integración de CI/CD, puede monitorear de forma continua la calidad y la seguridad de su código para ayudar a garantizar que no se pierda ninguna recomendación. En CodeGuru Reviewer, puede utilizar GitHub Actions ubicada en GitHub Marketplace para ejecutar revisiones de seguridad y recibir recomendaciones de forma directa en la interfaz de usuario de GitHub. Una vez que se haya incorporado, las recomendaciones se mostrarán de manera directa en la pestaña “GitHub Security” (Seguridad de GitHub).

Detección de seguridad

Las recomendaciones también se proporcionan dentro de la solicitud de extracción y dentro de la consola de AWS. Si hace clic en una recomendación dentro de GitHub, obtendrá información más detallada sobre lo que se descubrió, como el problema que se ha creado dentro de su aplicación, la ruta de resolución, cualquier CWE (Common Weakness Enumerations) vinculado y su gravedad.

Solicitudes de extracción

Amazon CodeGuru Profiler

El generador de perfiles de Amazon CodeGuru siempre busca optimizar el rendimiento de las aplicaciones, identifica las líneas de código más “costosas” y recomienda formas de corregirlas para reducir la utilización de la CPU, disminuir los costos de informática y mejorar el rendimiento de las aplicaciones. Por ejemplo, CodeGuru Profiler puede identificar si la aplicación consume una capacidad excesiva de la capacidad de CPU en una rutina de registro en lugar de que se ejecute en una lógica empresarial principal.

Generación permanente de perfiles de las aplicaciones en producción

CodeGuru Profiler está diseñado para funcionar de manera constante en la fase de producción con una mínima sobrecarga, lo que significa que puede dejarlo encendido todo el tiempo con un impacto mínimo en el rendimiento de la aplicación. De esta forma, puede generar perfiles y solucionar problemas en la aplicación mediante patrones reales de tráfico de clientes y detectar con facilidad problemas de rendimiento. Con los datos del generador de perfiles y las recomendaciones basadas en machine learning, puede identificar y solucionar los problemas de rendimiento de las aplicaciones en la fase de producción. CodeGuru Profiler también proporciona un resumen del montón para que pueda identificar los objetos que utilizan la memoria en exceso en cualquier momento determinado.

Comprensión del comportamiento del tiempo de ejecución de las aplicaciones

CodeGuru Profiler analiza de forma continua las características de latencia, de uso del montón y de utilización de la CPU de la aplicación para mostrar en qué parte de la aplicación se utiliza la mayoría de los ciclos o se pierde más tiempo. El análisis de la CPU y la latencia se presenta en un gráfico de llama interactivo que permite comprender fácilmente las rutas de código que consumen la mayoría de los recursos, verificar que la aplicación funcione como se espera y descubrir cuáles áreas se pueden optimizar aún más.

Anomalía de procesamiento de imagen
 Haga clic para ampliar

Los gráficos de llama permiten visualizar el rendimiento de su aplicación al agrupar las pruebas de seguimiento de pila durante un periodo de tiempo para ofrecer una imagen precisa del comportamiento de la aplicación durante ese tiempo. Puede usar un gráfico de llama para comprender fácilmente las rutas que consumen la mayoría de los recursos, verificar que la aplicación funciona como se espera y descubrir cuáles áreas se pueden optimizar aún más. Por ejemplo, el método UploadGreyImage gasta 134 868 USD por año y esto consume 10,22 % del tiempo real. De tal forma que, si no tenía previsto perder tanto tiempo, debe investigar.

Resumen del montón

El análisis del uso del montón se presenta en una visualización de resumen del montón que muestra qué objetos están asignados en el montón, ya sean sus propias clases de dominio o las que pertenecen a las bibliotecas o al JDK.

Descubra anomalías y problemas comunes del rendimiento de su aplicación
 Haga clic para ampliar

El resumen del montón permite visualizar todos los objetos asignados en el montón durante un periodo de tiempo determinado junto con su tamaño, recuento y serie temporal. Por ejemplo, puede ver en el gráfico de serie temporal que a las 16:20 hay dos objetos que comienzan a crecer de manera significativa (java.util.LinkedHashMap$Entry y java.land.UUID), que indican una posible fuga de memoria. Si esta tendencia en ascenso continúa y no se controla, podría ocasionar una situación de falta de memoria.

Recomendaciones inteligentes

CodeGuru Profiler identifica automáticamente los problemas de rendimiento en la aplicación y ofrece recomendaciones basadas en machine learning sobre cómo solucionarlos. Estas recomendaciones ayudan a identificar y optimizar los métodos más costosos o que requieren más recursos dentro del código sin necesidad de ser un experto en ingeniería de rendimiento. Estas optimizaciones le permiten disminuir el costo de la infraestructura, reducir la latencia y mejorar la experiencia general del usuario final.

Recomendaciones inteligentes
 Haga clic para ampliar

Cuando Amazon CodeGuru Profiler detecta oportunidades para optimizar el rendimiento de las aplicaciones, describe los motivos por los que recomienda un cambio, las causas del problema, la manera de resolverlo y la parte del código en la que el problema impacta la aplicación. Esta recomendación muestra que esta línea de código onerosa genera costos de 182 160 USD al año y tiene un impacto del 2,97 % en el uso de la CPU. Si sigue los pasos de resolución sugeridos, podrá ahorrar hasta 182 160 USD

Detección de anomalías

Amazon CodeGuru Profiler analiza de forma continua los perfiles de la aplicación en tiempo real y detecta anomalías en el comportamiento y los métodos de la aplicación. Se hace un seguimiento a cada anomalía en el informe de recomendaciones de la consola de CodeGuru Profiler. Además, se pueden ver las series de tiempo de cómo se comporta la latencia del método a través del tiempo con las anomalías resaltadas de forma clara. Si está configurado, también se enviará una notificación de Amazon SNS al detectar una anomalía nueva.

Detección de anomalías
 Haga clic para agrandar
Precios de Amazon CodeGuru
Obtenga más información acerca de los precios de Amazon CodeGuru

Visite la página de precios de Amazon CodeGuru.

Más información 
Regístrese para obtener una cuenta gratuita
Regístrese para obtener una cuenta gratuita

Obtenga acceso instantáneo a la capa gratuita de AWS. 

Registrarse 
Comience a crear en la consola
Comience a crear en la consola

Comience a crear con Amazon CodeGuru en la consola de administración de AWS.

Iniciar sesión