HN user

cbab

64 karma

Software developer, always on the lookout for things to learn and projects to hack on.

Posts1
Comments13
View on HN

Yes indeed. Encouraging open source contribution, validating that he/she can get stuff done and evaluate culture fit. Win-win-win.

On recent C++ projects, I used the TAP [0] test format. It's quite minimalistic and does the job.

Debugging tools have improved quite a bit. I suggest you take a look at asan [1] for memory related errors. Also, tsan [2] looks very promising for data races detection. I think both tools have been integrated within LLVM/Clang/GCC.

Also, you might want to take a look at tracing tools such as (shameless plug!) LTTng [3] for userspace.

Static analysis tools are quite "en vogue" right now. IMO, nothing comes close to Coverity Scan [4]. It's free for open source projects, but you will have to fork (quite) a bit of money to run this tool on proprietary applications. On the other hand, purely FOSS static-analyzer such as clang-analyzer and cppcheck can catch nasty errors. I would suggest using a mix of all these tools.

[0] http://testanything.org/testing-with-tap/c-plus-plus.html

[1] https://code.google.com/p/address-sanitizer/

[2] https://code.google.com/p/data-race-test/wiki/ThreadSanitize...

[3] http://lttng.org/ust

[4] https://scan.coverity.com/

I respectfully disagree with this. Ignoring return values is _not_ good practice. It is a slippery slope to bad software. By catching these memory errors, a program has the chance to properly teardown and report a message to the user instead of crashing.