El equipo de PVS-Studio y nuestro producto hacen una gran contribución al desarrollo de la calidad del software. Además, además de la detección explícita de errores en proyectos cerrados y abiertos, hay una contribución indirecta al desarrollo de compiladores y otras herramientas de análisis de código. Nos complace que a veces marcamos tendencias y decidimos dedicar una pequeña nota a esto en nuestro blog.
PVS-Studio es un analizador estático para detectar errores y vulnerabilidades potenciales en el código fuente de programas escritos en C, C ++, C # y Java.
Para popularizar la metodología de análisis de código estático y nuestra herramienta, escribimos notas sobre la verificación de varios
proyectos de código
abierto . En particular, revisamos varios compiladores de vez en cuando. Por ejemplo, verificamos y encontramos errores en proyectos como: GCC, LLVM, PascalABC.NET, Roslyn.
Hemos notado repetidamente un hecho interesante. Tan pronto como verifiquemos, digamos, LLVM o GCC, después de una o dos versiones en estos compiladores, aparecen un par de diagnósticos nuevos, destinados a identificar los errores que PVS-Studio podría encontrar en su código :). Desafortunadamente, no supusimos escribir fechas y enlaces a innovaciones relevantes, por lo que debe confiar en nuestra palabra aquí. Varios compiladores de C ++ toman prestados algunos de nuestros diagnósticos, ¡y creemos que esto es completamente normal, correcto y útil!
Además de los compiladores de C ++, los analizadores de C # ahora están conectados a diagnósticos de préstamos. ¡Esto significa que el analizador C # implementado en PVS-Studio se convierte en un modelo diferente! Darse cuenta de esto es agradable y genial.
En este caso, puedo arreglar, podemos decir, en tiempo real, cómo sucede esto. El 13 de agosto de 2019, publicamos un gran
artículo dedicado a verificar .NET Core Libraries (CoreFX). Entre otras cosas, en este artículo describimos el patrón de error asociado con el uso de cadenas interpoladas (ver diagnóstico
V3138 ). Los desarrolladores de CoreFX estaban muy interesados en nuestra publicación y comenzaron a corregir los errores que encontramos. Y ya el 14 de agosto, llegaron a los errores que encontramos relacionados con estas líneas muy interpoladas:
corrija algunos $ s faltantes para la interpolación de cadenas en el seguimiento .
Ahora la parte divertida. El mismo día, apareció una tarea en el proyecto Roslyn Analyzers para implementar el nuevo diagnóstico "
Nueva regla: cadenas interpoladas a las que les falta el carácter $ especial # 2767 ", que está conectado precisamente con los errores corregidos en CoreFX.
Nos complace que nuestro trabajo haya sido útil para los desarrolladores de CoreFX y que nuestros diagnósticos se hayan convertido en un ejemplo a seguir para los desarrolladores de Roslyn Analyzers. Es una pena que la herramienta PVS-Studio no se mencione en ninguna parte de la discusión. Resulta que ellos mismos encontraron estos errores y se les ocurrió su propio diagnóstico. Por supuesto, nos sentiríamos halagados si se nos mencionara como la fuente. Oh bien
¿Por qué decidimos escribir sobre todo esto? ¡Estamos muy contentos e incluso estamos un poco orgullosos de nosotros mismos! Al estudiar nuestra experiencia, otros compiladores implementan nuevos diagnósticos, lo que mejora la calidad del software desarrollado en su conjunto. Entiendo que no solo influimos en el desarrollo de la capacidad de los compiladores para encontrar errores. Sin embargo, nos complace saber que estamos contribuyendo a este proceso.
¿Nos molesta que otras herramientas estén aprendiendo gradualmente a encontrar los mismos errores que PVS-Studio? No Nuestra herramienta simplemente existe y se vende por la razón de que siempre estamos por delante del compilador. Nuestra tarea es estar siempre a la vanguardia. La conciencia del hecho de que estamos constantemente atrapados no nos permite relajarnos, y beneficia a todos. Además de esto, uno debe entender que PVS-Studio no es solo advertencias, sino también:
- Soporte rápido de alta calidad (solo los programadores responden cartas);
- Integración con Visual Studio, IntelliJ IDEA, SonarQube, Jenkins, IncrediBuild;
- Capacidad para usar tanto localmente como en la nube (Docker, Travis CI);
- Herramientas para integrar el análisis en grandes proyectos antiguos (supresión masiva);
- Documentación detallada con ejemplos para cada patrón de error;
- El mecanismo para enviar cartas a los desarrolladores (BlameNotifier);
- Monitoreo del compilador;
- Y así sucesivamente.
Gracias por su atencion Espero que estés contento con nosotros para PVS-Studio. Y
pruebe nuestro analizador para el control de calidad continuo del código de sus proyectos.
Enlaces adicionales:
- El cronograma para el desarrollo de capacidades de diagnóstico en PVS-Studio .
- Tecnologías utilizadas en el analizador de código PVS-Studio para buscar errores y vulnerabilidades potenciales .

Si desea compartir este artículo con una audiencia de habla inglesa, utilice el enlace a la traducción: Andrey Karpov.
PVS-Studio: motor de progreso .