¿Hay alguna API de código abierto que ayude a analizar el código?

7

Como ejemplo, digamos que necesito verificar un cierto uso del código C # y advertirle al usuario que esa es una mala práctica. Hay varios usos que quiero detectar, como:

  • El desarrollador no ha publicado el recurso (en un entorno COM pesado)
  • La instancia debe crearse usando Activator en lugar de nuevo (no tengo control de la API que estoy analizando)
  • Otros

La implementación de la API puede estar en cualquier idioma, pero en su mayoría analizaré c # y vb.net.

Idiomas adecuados:

  • C #
  • Python
  • Otro
pregunta George Silva 17.01.2012 - 14:00

2 respuestas

12

No es necesario reinventar la rueda. StyleCop ya lo hace.

También permite reglas de usuario a través de la extensión API. Por ejemplo, la detección del uso del Activador debería ser algo fácil de hacer (sin embargo, la detección del uso legítimo del Activador puede ser una tarea no trivial, pero se aplicaría a cualquier solución de análisis de código).

También hay ReSharper que (además de ser extensible de manera similar) puede integrar StyleCop directamente en Visual Studio, por lo que el análisis se puede realizar a medida que el programador escribe el código sin tener que iniciar manualmente una herramienta separada para verificar las convenciones.

Por supuesto,

StyleCop también puede iniciarse solo a través de GUI o desde la línea de comandos (por lo que es posible la integración en cualquier sistema de compilación / CI que esté utilizando).

    
respondido por el Matěj Zábský 17.01.2012 - 14:04
8

La respuesta de Matěj Zábský puede ser lo que está buscando, pero para responder a su pregunta real puede echar un vistazo a el nuevo proyecto de Microsoft Roslyn . Es una API pública que permite el análisis del código C #.

  

Más importante aún, estamos abriendo los compiladores C # y Visual Basic   y exponiendo toda esa rica información y análisis de código para ser   Disponible para su uso. Exponemos una superficie API pública y proporcionamos   puntos de extensión en los servicios de lenguaje C # y VB.

     

Esto abre nuevas oportunidades para que los extensores de VS escriban de forma eficaz   refactorizaciones y herramientas de análisis de lenguaje, así como permitir que cualquiera pueda   Incorpore nuestros analizadores, motores semánticos, generadores de código y   scripting en sus propias aplicaciones.

    
respondido por el Steven Jeuris 17.01.2012 - 14:43

Lea otras preguntas en las etiquetas