Nota para los profesores: PVS-Studio para presentar a los estudiantes las herramientas de análisis de código

PVS-Studio y entrenamiento

Mediante la comunicación de apoyo y algunos otros signos indirectos, notamos que entre nuestros usuarios gratuitos había muchos estudiantes. Motivo: el analizador PVS-Studio comenzó a ser utilizado por algunos profesores en las disciplinas relacionadas con el desarrollo de software. Esto es muy agradable para nosotros, y decidimos escribir esta pequeña nota para atraer la atención de otros maestros. Nos complace que los estudiantes conozcan la metodología del análisis de código estático en general y la herramienta PVS-Studio en particular. Nuestro equipo intentará contribuir al desarrollo de esta tendencia.

El desarrollo de software moderno no es posible sin un enfoque integrado para garantizar la calidad y la fiabilidad del software. La razón es que el tamaño de la base de código de las aplicaciones modernas está creciendo rápidamente. Explicaré esto en números. Tomemos, por ejemplo, sistemas operativos:

  • MS DOS 1.0: 4,000 líneas de código. Una persona podría leer todo el código, descifrarlo y encontrar errores.
  • Linux kernel 1.0.0: 176,000 líneas de código. El equipo aún tiene la oportunidad de hacer una revisión detallada del código, aunque tomará mucho tiempo y esfuerzo.
  • Linux kernel 5.0: más de 26,000,000 líneas de código. Es imposible realizar el proyecto.

Usando el kernel de Linux como ejemplo, puede ver que el tamaño de la base de código ha crecido 150 veces en 25 años. Ahora es imposible para un programador sentarse y revisar el código de toda la aplicación, comprenderlo, encontrar errores y mejorar las soluciones arquitectónicas. El dispositivo de los programas modernos simplemente no cabe en la cabeza de una persona, y no hay más especialistas que puedan responder cualquier pregunta sobre el diseño del proyecto.

La incapacidad para realizar el proyecto es solo la mitad del problema. A medida que crece el tamaño del proyecto, también lo hace la densidad de errores. Enfatizo: ¡ no se trata solo de un aumento en el número de errores, sino de su densidad ! En un programa escrito como parte de un documento final, puede escribir 1000 líneas de código y no cometer un solo error. Y no es realista agregar 1000 líneas de código a una aplicación grande y no cometer algunos errores. Para aclarar, recurrimos nuevamente a los números:

Figura 1. Densidad de error típica en proyectos de varios tamaños.

Figura 1. Densidad de error típica en proyectos de varios tamaños. Datos tomados del libro de Steve McConnell, Perfect Code.

Por lo tanto, es imposible escribir programas confiables utilizando los mismos enfoques que hace 20-30 años. Es necesario utilizar un conjunto de metodologías que ayuden a controlar el crecimiento de la complejidad de un proyecto de software y garantizar la calidad de código necesaria:

  • Estándares de codificación
  • Revisiones de código
  • Pruebas unitarias
  • Prueba de regresión
  • Prueba de carga
  • Prueba manual
  • ....
  • Análisis dinámico
  • Análisis estático

Las metodologías de la parte superior de la lista son bastante familiares para los programadores y han sido aplicadas con éxito por casi todos los equipos. Pero las dos últimas metodologías, aunque no son nuevas, son mucho menos comunes. Por lo tanto, ahora durante la preparación de los estudiantes, vale la pena prestar especial atención al estudio de las herramientas de análisis estático y dinámico.

No hablaré sobre análisis dinámico ahora, aunque no es menos importante que estático.

Pero el análisis estático es nuestro elemento, e invito a los maestros a prestar atención a nuestro producto de software PVS-Studio.

PVS-Studio es una herramienta para detectar errores y vulnerabilidades potenciales en el código fuente de programas escritos en C, C ++, C # y Java. Funciona en sistemas de 64 bits en Windows, Linux y macOS y puede analizar código destinado a plataformas ARM integradas y de 32 bits.

El analizador PVS-Studio puede considerarse como un ejemplo de una herramienta moderna para el análisis de código estático. En primer lugar, es bueno mostrar las capacidades de las herramientas de análisis estático para detectar errores y defectos de seguridad ( SAST ) utilizando su ejemplo. En segundo lugar, puede demostrar su integración en el ciclo de desarrollo de software para que el control del código sea continuo. Con su ejemplo, puede mostrar la posibilidad de integración con sistemas como Jenkins , TeamCity , Azure DevOps , SonarQube , Travis CI , etc.

Para comenzar a utilizar PVS-Studio como parte de la capacitación, no es necesario hacer nada especial o coordinar.

Ofrecemos varias opciones para la licencia gratuita de PVS-Studio, incluso para proyectos de código abierto. Específicamente para fines educativos, cuando el trabajo de los estudiantes no está abierto, la mejor opción es agregar el siguiente comentario al código:

// This is a personal academic project. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com

Para comenzar a utilizar el analizador estático PVS-Studio de forma gratuita, debe completar los siguientes dos pasos:

Primer paso

Si usa PVS-Studio como un complemento para Visual Studio o usa la utilidad Standalone, ingrese la siguiente clave de licencia:

Name: PVS-Studio Free
Key: FREE-FREE-FREE-FREE

Si usa PVS-Studio para Linux, vaya directamente al segundo paso, no necesitará un archivo con licencia.

Segundo paso

Debe ingresar dos líneas con un comentario al comienzo de cada archivo. Haga correcciones a todos los archivos compilados de su proyecto. Esto se refiere a archivos con las extensiones c, cc, cpp, cs, java, etc. No es necesario cambiar los archivos h de encabezado.

Puede agregar comentarios tanto manualmente como usar la utilidad auxiliar para esto. Puede descargar la utilidad (junto con el código fuente) aquí: how-to-use-pvs-studio-free .

Todo esto se describe con más detalle en el artículo " Cómo usar PVS-Studio de forma gratuita ". Pida a los alumnos que se familiaricen con él. En particular, debe tenerse en cuenta que brindamos soporte para usuarios gratuitos a través del sitio web StackOverflow. Pero no debe confundir el soporte y las notificaciones de errores. Solo sobre esos momentos y se describe en el artículo.

Gracias por su atencion En caso de cualquier pregunta, estamos listos para brindar asistencia y asesoramiento. No dude en contactarnos en soporte.

Enlaces adicionales:

  1. Ivan Ponomarev. Informe en la conferencia Heisenbug 2019 de Moscú: análisis continuo de código estático .
  2. Sergey Khrenov, Philip Handelyants. Clase magistral en la conferencia Saint HighLoad ++ 2019: analizador de código PVS-Studio .
  3. Andrey Karpov. Opciones de licencia gratuitas de PVS-Studio .
  4. PVS-Studio. Documentación



Si desea compartir este artículo con una audiencia de habla inglesa, utilice el enlace a la traducción: Andrey Karpov. Para la nota del profesor: use PVS-Studio para familiarizar a los estudiantes con las herramientas de análisis de código .

Source: https://habr.com/ru/post/470071/


All Articles