FitNesse: fine tool, though as your, “Source code presence on the web,” should it not reflect the high standards of craftsmanship for which you’re deservedly known?
Pouring it into a parsing tool here, I see it’s configuration efficiency is in the bottom quarter and it has 205 circular dependencies.
I know metrics don’t tell the whole story at all at all, but I wouldn’t fancy bumping into this brute on a dark night:
I’m actually quite proud of the quality of the code in FitNesse. It’s not perfect, but it’s quite good overall. There have been quite a few people who have had their hands in FitNesse; though most of the code was written by Micah and myself over the last 6 years.
The circular references are a bit concerning. I’ve been looking at them over the last year or so and have broken some of them. The urgency is not very high, however, since FitNesse ships as a single jar file. Still, your point is a good one, and we’ll be working on leveling the structure over time. (e.g. by eliminating one of the big culprits, the virtual wiki.)
If you’d like to find more reassuring metrics, I suggest you run FitNesse through a cyclomatic complexity checker. Or simply run a code coverage tool and execute the unit tests. Or, just sit down and start reading some of the code.
Jeff L.
15 days later:
Hi Bob,
Nice video. What’s with the notion of forcing setters—is that to provide better common-language support?
Jeff L.
15 days later:
Hi Bob,
Nice video. What’s with the notion of forcing setters—is that to provide better common-language support?
Chris
15 days later:
Hi. We’ve been looking at porting Fit to Flex/AIR the last couple of weeks, and the release of Slim couldn’t have come at a better time. I’ve successfully done the port to Flex/AIR but with some issues/changes to FitNesse, so wanted to share those with you.
1. Why is FitNesse the client and the Slim Executor the Server? In Flex there’s no concept of SocketServer so the two were initially waiting on each other. Once I change the SlimClient to be initiate the SocketServer all was right with the world. I assume this is the way Fit works, and so it was done similarly?
2. It would be good to add the port to the COMMAND_PATTERN so running an http url as the Test Runner would allow me to add ?port=[port#] instead of port being added at the end as a parameter.
From a feedback perspective, I’m greatful for you guys slimming down the effort to port as I know it would have taken quite a bit longer to do a port of a Fit Server. It did take quite a bit of time determining what was part of the Server code versus the Client code as the “Java Slim Executor port” was packaged with the Slim FitNesse side of the world, and originally I was thinking the server was FitNesse not the client. Maybe I’m the only one with that issue, but thought I would pass along the feedback.
Uncle Bob!
FitNesse: fine tool, though as your, “Source code presence on the web,” should it not reflect the high standards of craftsmanship for which you’re deservedly known?
Pouring it into a parsing tool here, I see it’s configuration efficiency is in the bottom quarter and it has 205 circular dependencies.
I know metrics don’t tell the whole story at all at all, but I wouldn’t fancy bumping into this brute on a dark night:
fitnesse.components.MovedPageReferenceRenamer -> fitnesse.wikitext.MovedPageReferenceRenamingVisitor -> fitnesse.wikitext.widgets.WikiWordWidget -> fitnesse.html.HtmlUtil -> fitnesse.wiki.PageData -> fitnesse.wikitext.widgets.ParentWidget -> fitnesse.wikitext.WidgetBuilder -> fitnesse.wikitext.widgets.TOCWidget -> fitnesse.wiki.VirtualCouplingExtension -> fitnesse.responders.ErrorResponder -> FitNesseContext -> fitnesse.responders.ResponderFactory -> fitnesse.responders.refactoring.MovePageResponder -> fitnesse.components.MovedPageReferenceRenamer
Regards,
Ed.
Ed,
I’m actually quite proud of the quality of the code in FitNesse. It’s not perfect, but it’s quite good overall. There have been quite a few people who have had their hands in FitNesse; though most of the code was written by Micah and myself over the last 6 years.
The circular references are a bit concerning. I’ve been looking at them over the last year or so and have broken some of them. The urgency is not very high, however, since FitNesse ships as a single jar file. Still, your point is a good one, and we’ll be working on leveling the structure over time. (e.g. by eliminating one of the big culprits, the virtual wiki.)
If you’d like to find more reassuring metrics, I suggest you run FitNesse through a cyclomatic complexity checker. Or simply run a code coverage tool and execute the unit tests. Or, just sit down and start reading some of the code.
Hi Bob,
Nice video. What’s with the notion of forcing setters—is that to provide better common-language support?
Hi Bob,
Nice video. What’s with the notion of forcing setters—is that to provide better common-language support?
Hi. We’ve been looking at porting Fit to Flex/AIR the last couple of weeks, and the release of Slim couldn’t have come at a better time. I’ve successfully done the port to Flex/AIR but with some issues/changes to FitNesse, so wanted to share those with you.
1. Why is FitNesse the client and the Slim Executor the Server? In Flex there’s no concept of SocketServer so the two were initially waiting on each other. Once I change the SlimClient to be initiate the SocketServer all was right with the world. I assume this is the way Fit works, and so it was done similarly? 2. It would be good to add the port to the COMMAND_PATTERN so running an http url as the Test Runner would allow me to add ?port=[port#] instead of port being added at the end as a parameter.
From a feedback perspective, I’m greatful for you guys slimming down the effort to port as I know it would have taken quite a bit longer to do a port of a Fit Server. It did take quite a bit of time determining what was part of the Server code versus the Client code as the “Java Slim Executor port” was packaged with the Slim FitNesse side of the world, and originally I was thinking the server was FitNesse not the client. Maybe I’m the only one with that issue, but thought I would pass along the feedback.
Thanks again for a great addition to FitNesse!
The video appears to be missing?
Video missing?
Video missing?
still missing
Still Missing.
Still Missing :(
Maybe I’m the only one with that issue, but thought I would pass along the feedback…