Martin Sebor wrote:
[snip] Here are a few possibilities: 1. Clean slate. Everything compiles and links cleanly with no errors or warnings, and runs successfully to completion with zero failed assertions. 2. Warnings acceptable, no errors. Same as above except that warnings are allowed. (How many warnings? I.e., what's the threshold?) 3. Warnings and some failed assertions acceptable. Just like (2) except that tests are allowed to report some failed assertions. (Again, how many failed assertions are acceptable?) 4. Status quo. I.e., some warnings are acceptable, compilation or linker errors (except in the library) are acceptable if they are attributable to platform bugs or limitations, some (small number) of runtime errors, including abnormal exits, are expected. Ideally, we'd shoot for (1). Frankly, I don't see it happening without a monumental effort. I'm not even convinced that (2) is doable. Maybe (3), with a lot of work. I agree that (4) is less than optimal. Thoughts?
I think #2 should be the goal on common platforms although I can appreciate that enforcing the rule in rare environments could be hard. I suppose it's up to us to decide what the "common" target platforms are. In my opinion, Linux should definitely be one. Windows another. Solaris is also pretty widely available. Others? -- Mark