5 ms·
OK, I'll bite. I had a contract gig using IBM's Rational Test RealTime suite to validate an embedded C codebase for a medical device. The suite is hugely expen
by paulrpotts 11y ago
OK, I'll bite. I had a contract gig using IBM's Rational Test RealTime suite to validate an embedded C codebase for a medical device.
The suite is hugely expensive per seat. It provides some neat reporting features for verifying code coverage, and especially for making sure you cover all branches of conditional code. That stuff is neat. But the _language_ for expressing tests is a monstrosity and inter-operates badly and bizarrely with C. Just doing something like verifying a function that may or may not return a NULL pointer requires awkward workarounds and cannot be expressed directly. The tool was apparently originally designed to work with Ada and the language looks a bit like Ada.
In addition, it is very poorly documented. Apparently the shops that use it are actually happy with this situation, because those that have developed a storehouse of local tips, tricks, and workarounds have a competitive advantage in using the tool, compared to shops just starting out with it.
The tests I produced worked, and I got a lot of tests written, and thus found some critical bugs in the client's codebase, so that was satisfying; but it would be hard to imagine a worse, more awkward language. There was just no sanity and consistency to it. I've used the C family of languages since the eighties; I was fluent in Java; I've used the Lisp family of languages; I was a Newton developer; I'm comfortable with Objective-C, Dylan, and some Haskell. This thing is an abomination. Besides the Ada-like language for writing tests, it apparently has a lot of Perl under the hood, but it is an elderly dialect. It may even be implemented in Perl; I didn't want to dig too deep into it, because that way lay madness.
I'm really not sure what set of open source tools could replace it, for its functionality, but I was sorely tempted to try to cobble some alternatives together out of Clang code analysis tools and something homegrown.