mercoledì 22 agosto 2012

Fixing the "development mode" for coverage testing - netbeans 7.2

If  you have already tried the "test coverage" development option for the mingw build, you probably have noticed that it doesn't do anything special, it is just a normal debug build.

To enable the coverage testing you have two ways:
1) just add the --coverage options in the compilation line, it works but I find it a bit ugly.
2) Fix the "test coverage" option.
First you have to follow this link, to have the xml for the various toolchains:

http://netbeans.org/kb/69/cnd/toolchain.html

The xmls are dumped (in my windows machine) in :
C:\Documents and Settings\Administrator\Application Data\NetBeans\7.2\config\CND\ToolChain

The file to edit is ( for mingw_tdm)  Mingw_TDM.xml

Look for this section, and put the following values, it is easy, once you know where to look for

        <development_mode>
            <fast_build flags=""/>
            <debug default="true" flags="-g"/>
            <performance_debug flags="-g -O"/>
            <test_coverage flags="-g --coverage"/>
            <diagnosable_release flags="-g -O2"/>
            <release flags="-O2"/>
            <performance_release flags="-O3"/>
        </development_mode>





domenica 19 agosto 2012


Visual studio 2012 e altro


Questo e' il link alla comparazione fra le varie edizioni:

Dato che ci interessa il code coverage, dallo specchietto sembra che la versione minima sia il Premium.

E questo e' il link al “pricing preview”:



Vediamo quindi cosa si puo' fare per avere un sistema di sviluppo confrontabile a costo zero o near zero.
Chiaramente, se stiamo parlando di sviluppo in ambito professionale, Visual studio resta una scelta quasi obbligata, pero' anche in ambito professionale puo' servire avere degli ambienti “complementari”, ad esempio si puo' usare vs per le build ufficiali ed altri sistemi per editing, coverage testing etc.

In futuro approfondiremo questo approccio del “doppio binario”.

Per ora vediamo passo dopo passo come mettere su un ambiente di sviluppo C/C++ in windows con buone caratteristiche.
Alcune scelte sono ovviamente personali e discutibili, diciamo che sono una base da cui partire.

  1. Il compilatore; ci sono diversi compilatori open source o a costo zero, in questa ricetta prendiamo mingw; per prima cosa bisogna procurarsi msys, che serve per il make (mingw32-make non va bene)
  2. Personalmente non ho capito l'evoluzione ufficiale del progetto mingw, mi trovo meglio a scaricare direttamente tutti I files binari piuttosto che usare il setup ufficiale, un link, che ho postato anche precedentemente, e' questo:
    http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/
La versione da prendere e' gcc-dw2-4.6-release
  1. IDE consigliata (al momento) e' netbeans 7.2, o versione C/C++ o versione con tutto compreso, da prendere qui:
  2. Unit test consiglio Cunit che e' integrabile con netbeans 7.2, la versione ultima e' la 2.1.2 da prendere qui

Nei prossimi post vedremo come configurare il tutto ed estenderlo con altri tool per la documentazione, coverage testing etc.

p.s. dimenticavo la directory bin di mingw, dove unzippate, va poi aggiunta al PATH.

venerdì 17 agosto 2012

Clang e windows

ok, questo puo' essere il primo post con dei contenuti concreti;

Sicuramente conoscete CLang e sapete anche che farlo funzionare decentemente in windows non e' facile.

Fortunatamente, leggendo una discussione su stack overflow http://stackoverflow.com/questions/8882753/clang-on-windows
ho scoperto che l' utente rubenvb di stack overflow fornisce i binari gia' pronti all'uso.

questi sono i link su sourceforge:

http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/rubenvb/

Prima bisogna prendere
gcc-dw2-4.6-release
e poi
clang-3.1-release

Ho testato il tutto con netbeans 7.2 e funziona correttamente, purtroppo non c'e' l'analizzatore statico, a me interessa comunque la possibilita' di avere i messaggi  diagnostici di clang.

enjoy...

giovedì 16 agosto 2012

Grosso modo gli argomenti che pensavo di trattare sono i seguenti:

- definizione degli obiettivi
- scelta del compilatore
- scelta dell'IDE
- scelta del framework per unit test
- strumenti per il coverage testing
- strumenti per l'analisi statica.
- Ambienti per la build
- sistemi per il controllo di versione
- Utility per la documentazione

A seconda dell'interesse suscitato pensavo di raccogliere poi il tutto in un ebook.

Il primo punto ci permette di orientarci poi nelle scelte, si tratta di definire i requisiti che ci sembrano necessari;
Qui bisogna cominciare a fare una differenziazione tra lo sviluppo di applicazioni commerciali e quello senza fine di lucro.

Per le applicazioni commerciali credo sia inevitabile avere (anche) il visual studio, piu' avanti ne parleremo, per ora direi che l'ambiente di sviluppo desiderato, cioe' il punto corrispondente alla definizione degli obiettivi deve avere le seguenti caratteristiche:

Compilatore C da c89 in poi.
C++ gradito ma lo scrivente lo evita se puo' (cominciamo a dare qualche riferimento, sono un fan di Les Hatton

Altri linguaggi, tipo Fortran, graditi sopratutto per nostalgie del Fortran 77...
Ada apprezzato, pero' corriamo il rischio di andare off topic, il focus principale e' sulla programmazione in linguaggio C.

l'IDE deve facilitare i punti successivi, vale a dire ambiente per gli unit test integrato, ci deve essere un report visualizzabile per il coverage testing, deve integrarsi con tools per l'analisi statica ed il controllo di versione.

Se poi ci fosse un ambiente di build separato, tipo continuous integration, sarebbe il massimo.


Hello world

Lo scopo di questo blog e' quello di fornire consigli riguardo alla programmazione in C, tipicamente in windows, dando la priorita' a strumenti open source o free.

Cercando nel web ho visto che c'e' molto materiale ma in genere si vede che manca quell' approfondimento che deriva, o dovrebbe derivare, dall'uso professionale del linguaggio.

Data quindi l'assenza di guide simili in italiano, ho pensato di iniziare a scrivere qualcosa.

Un altro scopo e' ovviamente quello di diventare ricco e famoso :-)