tecnicas sonar reglas pruebas para herramientas google fuente estático estatico código como codigo calidad analytix analizar analisis objective-c parsing antlr static-analysis javacc

objective-c - reglas - sonar analisis de codigo estatico



Análisis de código Objective-C para análisis estático (4)

Me encantan los análisis estáticos y las verificaciones en tiempo de compilación, casi por completo, pero la mayor parte de mi trabajo diario es en Objective-C. Para resolver esta tensión, me gustaría poder escribir mis propias herramientas de análisis que puedo ejecutar en mis proyectos de Objective-C.

Pero buscar en Google a través de Internet sugiere que las personas tienen dificultades para armar una gramática completa de Objective-C. Un sitio básicamente recomienda renunciar.

Encontré una gramática en el sitio web de ANTLR , pero cuando la encendí , no pude analizar nada en absoluto. Por ejemplo, respondió a la línea:

void x();

con src/main/resources/somecode.m line 1:0 no viable alternative at input ''void''

:(

Eché un vistazo más de cerca a la gramática y encontré el siguiente descargo de responsabilidad desalentador:

it''s a work in progress, most of the .h file can be parsed

Pero necesito algo que pueda analizar tanto la interfaz como la implementación.

¿Hay alguna gramática completa de Objective-C 2.0 por ahí? Preferiría algo que pueda funcionar con Scala (por lo que cualquier cosa compatible con Java, como ANTLR, sería perfecta), pero en este punto estaría dispuesto a adaptar algo diseñado para otro conjunto de herramientas de analizador.


Clang es una herramienta de análisis estático que tiene soporte para Objective-C. Lo he encontrado muy útil en el pasado.

http://clang-analyzer.llvm.org/


Como otros lo mencionaron, Clang sería la solución correcta. Puede proporcionar sus propios consumidores de AST, es decir, las clases que se invocarán al revisar el AST, lo que le permitirá no tener que preocuparse por analizar o jugar con la gramática.

Clang admite Objective-C en su totalidad, y ya hay muchas clases en el analizador estático en las que puede modelar sus propias comprobaciones. (en clang/lib/StaticAnalyzer/Checkers ).

Ese directorio contiene una gran cantidad de comprobadores de analizadores estáticos, pero también puede crear un consumidor AST normal. Consulte http://code.google.com/p/chromium/wiki/WritingClangPlugins para obtener más información.


Puede usar OCDepend , es una herramienta de análisis estático basada en Clang que simplifica la administración de la calidad del código Objective-C y proporciona un marco de consulta de código altamente flexible.


clang es extensible; Puedes ampliar su análisis estático existente o crear el tuyo propio. llvm / clang está diseñado como una serie de bibliotecas a las que se puede vincular (de forma dinámica o estática). Un gran punto de partida es la library migradores ARC (conteo automático de referencias), que se encarga de analizar y reescribir estáticamente el código objetivo-c.

arcmt-test es un pequeño programa de ejemplo que consume la biblioteca del migrador ARC.