Autor Tema: Herramientas para comprobación y/o validación de código  (Leído 1677 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Herramientas para comprobación y/o validación de código
« en: 28 de Septiembre de 2014, 14:07:10 »
Herramientas que analizan el código buscando bugs o signos de baja calidad.

Python. Pylint:
Pylint is an open source program that analyzes Python source code looking for bugs and signs of poor quality. You can customize the program to show errors or conventions that are important to you. Pylint can be automated in your project using Apycot, Hudson or Jenkins.
http://www.pylint.org

Para HTML / CSS:
Servicio de validación de páginas web y código HTML / CSS del W3C.
http://validator.w3.org

PMD:
PMD is a source code analyzer. It finds common programming flaws like unused variables, empty catch blocks, unnecessary object creation, and so forth. It supports Java, JavaScript, XML, XSL. Additionally it includes CPD, the copy-paste-detector. CPD finds duplicated code in Java, C, C++, C#, PHP, Ruby, Fortran, JavaScript.
http://pmd.sourceforge.net

Sonar:
Gestiona la calidad del código fuente y realiza distintas métricas del código.
http://www.sonarqube.org


Saludos.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 17755
    • MicroPIC
Re: Herramientas para comprobación y/o validación de código
« Respuesta #1 en: 29 de Septiembre de 2014, 15:37:15 »
No tenía ni idea de la existencia de este tipo de herramientas, y me ha picado mucho la curiosidad. ¿Cuál recomiendas para C18 o CCS?
Un saludo desde Sevilla, España.
Visita MicroPIC                                                                                        ɔ!doɹɔ!ɯ ɐʇ!s!ʌ

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Herramientas para comprobación y/o validación de código
« Respuesta #2 en: 29 de Septiembre de 2014, 16:47:44 »
En mi trabajo usamos CUnit y Google Test para probar nuestros bloques de código y verificar que estos hacen lo que deben. Ambas son gratuitas. Lo que hacen es que dan un framework de funciones de validación que verifican que las funciones escritas devuelvan valores esperados.

http://cunit.sourceforge.net/

http://code.google.com/p/googletest/

Otro que usamos pero que no es gratuito es Klocwork. Es análisis estático de código que se encarga de evaluar el código que uno hace y verificar overflows, memory leaks, validación de tipos, etc.


Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Herramientas para comprobación y/o validación de código
« Respuesta #3 en: 29 de Septiembre de 2014, 17:28:50 »
No tenía ni idea de la existencia de este tipo de herramientas, y me ha picado mucho la curiosidad. ¿Cuál recomiendas para C18 o CCS?
No conozco herramientas específicas para C18, por eso abrí el hilo.
A ver si entre todos las encontramos.

Gracias migsantiago. Le echaré un vistazo a las que propones.

Saludos.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Herramientas para comprobación y/o validación de código
« Respuesta #4 en: 29 de Septiembre de 2014, 17:36:24 »
Lo que si sé es que hay varios tipos de herramientas:

   Herramientas de análisis estático.  http://es.wikipedia.org/wiki/An%C3%A1lisis_est%C3%A1tico_de_software

   Herramientas de análisis dinámico.  http://es.wikipedia.org/wiki/An%C3%A1lisis_din%C3%A1mico_de_software

   Herramientas para métrica de software (por ejemplo métrica función) http://es.wikipedia.org/wiki/M%C3%A9trica_de_punto_funci%C3%B3n


Las herramientas que propone migsantiago parecen de tipo dinámico. Las que proponía yo, creo que sólo son herramientas estáticas.


En principio la herramienta que quiero probar es Sonar, que puede validar código C.
El compilador C18 es compatible con ansi C99, de manera que sonar debería ser compatible.
Cuando tenga un rato lo probaré.

Saludos.


Saludos.
« Última modificación: 29 de Septiembre de 2014, 17:39:38 por Picuino »

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Herramientas para comprobación y/o validación de código
« Respuesta #5 en: 29 de Septiembre de 2014, 17:42:15 »
Herramientas para análisis estático de software:

http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C.2FC.2B.2B


Citar
   Astrée – finds all potential runtime errors by abstract interpretation, can prove the absence of runtime errors and can prove functional assertions; tailored towards safety-critical C code (e.g. avionics).
    BLAST – (Berkeley Lazy Abstraction Software verification Tool) – An open-source software model checker for C programs based on lazy abstraction.
    Cppcheck – Open-source tool that checks for several types of errors, including use of STL.
    cpplint – An open-source tool that checks for compliance with Google's style guide for C++ coding.
    Clang – An open-source compiler that includes a static analyzer.
    Coccinelle – An open-source source code pattern matching and transformation.
    ECLAIR – A platform for the automatic analysis, verification, testing and transformation of C and C++ programs.
    Eclipse (software) – An open-source IDE that includes a static code analyzer (CODAN).
    Fluctuat – Abstract interpreter for the validation of numerical properties of programs.
    Frama-C – An open-source static analysis framework for C.
    Goanna – A software analysis tool for C/C++.
    GrammaTech CodeSonar – Defect detection (Buffer overruns, memory leaks, ...), concurrency and security checks, architecture visualization and software metrics for C, C++ and Java source code.
    Klocwork Insight – A static analysis tool for C/C++.
    Lint – The original static code analyzer for C.
    LDRA Testbed – A software analysis and testing tool suite for C/C++.
    Parasoft C/C++test – A C/C++ tool that does static analysis, unit testing, code review, and runtime error detection; plugins available for Visual Studio and Eclipse-based IDEs.
    PC-Lint – A software analysis tool for C/C++.
    Polyspace – Uses abstract interpretation to detect and prove the absence of certain run time errors in source code.
    PVS-Studio – A software analysis tool for C, C++, C++11, C++/CX (Component Extensions).
    PRQA QA·C and QA·C++ – Deep static analysis of C/C++ for quality assurance and guideline/coding standard enforcement.
    SLAM project – a project of Microsoft Research for checking that software satisfies critical behavioral properties of the interfaces it uses.
    Sparse – An open-source tool designed to find faults in the Linux kernel.
    Splint – An open-source evolved version of Lint, for C.


El padre de todos:

http://es.wikipedia.org/wiki/Lint


Saludos.

Desconectado Picuino

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 5416
Re: Herramientas para comprobación y/o validación de código
« Respuesta #6 en: 29 de Septiembre de 2014, 18:04:57 »
SPLINT para windows:

http://www.splint.org/win32.html

Saludos.