I'm starting a new .Net project, and I would like to know your recommendation for tools to use.
In general, I would like to have the following:
- Somebody should be able to check out the project and build it with nothing more than mono or .Net installed
- It should build on as many platforms as possible (or at least Windows and Linux)
- Somebody should be able to build it automatically (using nant, for example) or from their IDE
- The automated build should run at least the following:
- The code should all be compiled (obviously)
- The unit tests should all be run and any failures reported
- The following would also be nice, but optional:
- Provide test coverage data (in an easily readable report, if possible)
- Build API documentation
- Provide code metrics analysis (again, with a report if possible)
- Check for common coding errors and stylistic problems (similar to what FxCop or checkstyle do. Again, with a report, if possible)
In past projects, I've always tended to use the following:
- Automated build: nant
- Unit testing: nunit
- Test mocking: Moq (This is an awesome library)
- API documentation: Sandcastle (Don't know if this works on anything but Windows)
- Metrics: sourcemonitor (I don't think this works on anything but Windows)
- Test coverage: ncover (This is the very old, open source version. Does it work on anything but Windows?)
- Code checking: fxcop (Does this work on anything but Windows?)
The problems I'm facing with it are:
- I have to bundle all of this software with the code, giving me nearly 100MB in tools alone. It's either that or require the user to install and configure all of these before they can build the project, which is undesirable. How do you get around this?
- Many of the tools are difficult to integrate with nant, such as ncover and source monitor
- Many tools don't work on 64-bit versions of Windows without modification (I'm looking at you, nCover)
- Some tools run on Windows only
- Some of the tools are extremely old
- I can't get very nice looking reports (if any at all) out of many of the tools, and certainly can't get them to look consistent with each other
- I have to manually alter some of the Visual Studio generated project files to add special configurations (otherwise the automated and integrated builds step on each other)
Unfortunately, the choice of free tools is something that Java definitely wins over .Net. There are an abundance of test coverage tools, code analysis tools, reporting tools, API documentation tools, testing tools, build tools etc. available for Java, but I'm having a hard time finding any for .Net.
So, are there any better and still free alternatives to some of these tools that will work across all platforms that support mono?
What are your recommendations?