January 2007 Blog Posts

Code Metrics [1]

Come annunciato qualche giorno fa, ho iniziato la scrittura di una libreria estendibile per calcolare "code metrics". Se qualcuno fosse interessato alle motivazioni le trova qui. Sono arrivato al punto in cui il motore comincia a produrre qualche numero Analyzer az = new Analyzer();az.AddAssemblyFile(root + @"A\bin\Debug\A.dll");az.AddAssemblyFile(root + @"B\bin\Debug\B.dll");Analysis a = az.Generate(new InstabilityAssemblyDependenciesWalker());AssemblyDescriptor ad = a.Scan.FindAssemblyDescriptor("[A]");Assert.IsNotNull(ad);double i = ad.DescriptorCounters["Instability"];Assert.AreEqual(0.75, i);ad = a.Scan.FindAssemblyDescriptor("[B]");Assert.IsNotNull(ad);i = ad.DescriptorCounters["Instability"];Assert.AreEqual(1, i); E' possibile scrivere dei "visitor" esterni che navigano i grafi generati dall'analisi ed effettuano i loro calcoli. Nell'esempietto il "walker" InstabilityAssemblyDependenciesWalker utilizza un paio di visitor per il calcolo della metrica afferent coupling (Ca) e di quella efferent coupling (Ce), da cui poi ricava la metrica instability. Le definizioni delle suddette metriche si possono trovare per esempio qui. Quando avrò un paio di metriche sensate cercherò di...

Analisi delle dipendenze e dintorni

Da 2-3 mesi ho un'idea che mi frulla per la testa relativamente all'analisi delle dipendenze tra assembly e tra tipi. In giro non c'è molto che faccia questo tipo di lavoro, fatta eccezione per NDepend che, quando pronto (ora è RC1), sarà un gran tool ma sarà anche a pagamento, costerà intorno ai 300$ a licenza. Sarebbero soldi assolutamente ben spesi, ma potrebbero esistere scenari dove un "motore" di analisi delle dipendenze e più in generale del codice IL potrebbe essere interessante anche per scopi non direttamente correlati alle metriche e al controllo della qualità del codice. Penso per esempio ad...

[OT] Taggato...

Essendo stato multi-taggato da Roberto e Simone, mi tocca... :) 1) Ho iniziato a programmare su un C64 nell'84, in BASIC, ma era più che altro uno scherzo, facevo strani esperimenti che non portavano a niente, e che nemmeno io capivo completamente... comprai anche un manuale sull'assembler del 6502 e provai a leggerlo, non capivo un tubo ma mi affascinava da morire :) Il vero inizio si può dire che sia stato 3 anni più tardi, al Poli, Pascal su PC, poi in C, e poi il resto... 2) Sono nato e vissuto in un paesino, per cui pur piacendomi...