Flickr: Fotos von doobop
Wizkid’s soup
“Wer immer in die Fußstapfen eines anderen tritt, kann niemals Überholen.” by Louis Geiselberger
digi images – my little china-girl (von mam-foto)
digi images – my little china-girl (von mam-foto) Sehr schöne Aufnahme. Very nice shot.
digi images – 5 nach irgendwas (von gingerfish)
urban scenes: ein Fotoalbum in Flickr
Light Spirals auf Flickr – Fotosharing!
w/ or w/o me
“Die Geschichte zeigt, dass jede Anwendung einer Technik von Anfang an bestim…” – Mateo Hamburgs soup.io
“Es genügt nicht, sich keine Gedanken zu machen. Man muss auch unfähig sein, s…” – Mateo Hamburgs soup.io
I « Lolcats ‘n’ Funny Pictures – I Can Has Cheezburger?
Ubuntu on Dell | Ubuntu
TP: Genveränderte Pflanzen: ein Flop?
journalismus – nachrichten von heute
DOC054 Unregelmäßigkeiten bei der Wahl in Hessen – Chaosradio Podcast Network
oae
22C3: A discussion about modern disk encryption systems
CAMP2007 1845 Freifunk und Recht – Chaosradio Podcast Network
CAMP2007 1937 Linux ist obsolet 2,0 – Chaosradio Podcast Network
Convert pixmaps file into a Windows .ico file to create a favicon.ico file with GIMP
A Collection of JVM Options
A Collection of JVM Options Show also in what version the option exists.
Free your Speech » Blog Archive » Thank you so much Apple
curve to
curve t It is so easy to use cairo.
Hibernate Search
Amazon patent fully revoked: skirmish victory for FFII
Please read the full story here http://press.ffii.org/Press_releases/Amazon_patent_fully_revoked%3A_skirmish_victory_for_FFII
EU tells open source to start paying MS patent tax
Please read the full story here: http://press.ffii.org/Press_releases/EU_tells_open_source_to_start_paying_MS_patent_tax .
Cyclomatic Complexity
Cyclomatic Complexity is added as a new approach to find methods that are possible failures. It is implemented in the way that McCabe describes it in its original paper on page 7 and 8. The cyclomatic complexity number is computed by counting all if, for and which statements of a method. For every if statement that contains a && 2 is add to the cyclomatic complexity.
Complex
The cyclomatic complexity doesn’t have a maximum value but the likelihood evaluator has to return a value between 0 and 1 including 0 and 1. To have a maximum for converting the cyclomatic complexity between 0 and 1 complexity values bigger than 10 are set to 10. This is the upper bound that McCabe terms in his paper on page 7.
Case statements
McCabe says in his paper on page 9: “The only situation in which this limit has seemed unreasonable is when a large number of independent cases followed a selection function (a large case statement), which was allowed.” To have a “reasonable” upper limit the case statements aren’t count.
Enhancements
To have a complete implementation of the cyclomatic complexity measurement the case statements should also be taken in account, but then it should be possible to configure the upper limit.
Automated evaluation
How to evaluate? First my colleagues should only test it. But my professor thought that this isn’t enough for an expressive and compareable result. So the idea is to set errors and start the evaluation when tests fail. And everything should work automatically. The user start it and after a month or so you have the result without any intervention by the user
Jesting
There exists a tool called Jester that changes the source code of programms and run the tests after every change. If no tests fail it will remember the position and what changed. With this procedure it is possible to find source code that isn’t well tested. But this isn’t exactly what we need. We need failed tests to test how good an evaluator finds the changed method.
EzUnit and Jester
The procedure is as follow. First we get all methods of a projects source folder from the Eclipse (JDT). Then we do one style of change, there are 11 variants of changing the source code, after each other for every method. These variants are taken from Jester. I will explain them later. Then the test suite is started. If compilation is necessary the launch waits for completion and continues thereafter. There are three cases after the test site launch. Junit can give an error back this means something not test specific goes wrong. In the case Junit returns with a failure the evaluation is started because thento reverse there are failed tests. The third case is that nothing failed after the change. Then there is nothing to evaluate like after an error and you know that there is bad tested code in the project. The next step is to take all made changes back. If all methods are changed with all variants of source code changes a csv file is written with all results in the project root folder.
Changing source code
Jester has 11 variant of changing source code. All are implemented by EzUnit. There is an number changer that searches for one digit and add 1 to it. This Jester implementation can lead to compilation errors because it changes an octal number representation from 0x … to 1x… If such a change happens it is ignored. The other methods replace java language constructs to reverse there meaning like “true” to “false”, “if (” to “if (true ||”, “if (” to “if (false &&”, “==” to “!=”, “!=” to “==”, “++” to “−−” and “−−” to “++”. Such changes can lead to endless loops. To avoid an ever blocking test the timeout annotation (@Test(timeout = 60000) for Junit4 should be used. But we saw also endless loops where the cause is unknown for now and where the setting of the timeout are not working. In this cases the launch has an timeout set so that it continues with another change.
The time
First tests show that a evaluation run can take very long dependent on the number of methods and tests a project has and the time for one test run. An evaluation run with commons-codec (191 tests) needs 4 hours on double processor with 1.66GHz and for commons-math (1022 tests) about 4 days.
You must be logged in to post a comment.