我在一家在Joel Test(至少在纸上)上获得11分的公司工作。
但是实际上,没有什么能比预期的要好,该项目已经在DEFCON 1上进行了半年。现在,我的大多数同僚都高兴,如果他们可以在周日下午6:00回家。
使用静态分析工具是使我不工作的显而易见的好习惯之一。该项目都跟踪gcc -Wall警告和专有且非常昂贵的“ C / C ++”工具。
Gcc警告的确经常指向真实的(如果大部分时间都是无礼的)错误。
但是,专用工具列出了诸如隐式强制转换和字符串文字的sizeof之类的内容。隐式演员表也在其样式表中列入黑名单。
标准做法是迫使人们关闭每个警告。请注意,这确实排除了主要是误报的警告,这不是问题。
结果是:
- 人们向每个右值和每个参数添加类型转换,以隐藏过程中真正存在问题的类型不匹配。
- 人们引入一个错误,或者使用其他有问题的语言功能(用strlen代替sizeof,用strncpy代替strcpy,等等)。
- 警告被静默。
- 错误报告开始滚动。
主要要点是原始代码是由在语言能力范围内安全地工作的人编写的,而修正不是。
现在,我真的不认为可以挽救这家公司。但是,我想知道是否有一种更好的方法,最好是可以使用“专业”工具的方法,还是我应该避免完全使用它们,以防将来我自己做出决定。
不能假定所有程序员都是不能犯错的天才的解决方案。因为如果可以的话,那么首先就不需要使用这些工具。