微信号:infoqchina

介绍:有内容的技术社区媒体

11月15日 成都三环内开卖“国四”汽油

2013-10-11 17:40 InfoQ

英国的Contemplate 公司最近宣布,他们已经发布了主打产品ThreadSafe的首个公众测试版本,该产品是一种用于检测Java代码中并发缺陷和低效问题的静态分析工具。


在这个版本之前的1.2版中,ThreadSafe还只是给部分用户群体使用。本次发布的版本除了向公众开放外,还增加了大量新特性。


ThreadSafe支持Windows、Linux和OS X,并能以Eclipse插件方式执行,或者与 SonarQube代码质量平台整合。它很快就能够以 CodeSonar公司受欢迎的静态分析工具Grammatech的插件形式发布。


InfoQ安装了ThreadSafe,并使用它对中型规模的多线程应用进行了测试。将其安装到Eclipse中很容易,但需要重新启动Eclipse。


为了进行对比,我们同样运行该应用,而使用的是FindBugs,它是用于从各方面定位Java代码中的缺陷的流行的静态分析工具,其中还包括对“多线程正确性”的检测。


两款工具中都号称有自己的利器。其中FindBug能定位并发错误,如“在所有的异常路径中,方法未释放锁”(见下图1),ThreadSafe似乎能更好地定位Java内存模型的错误应用和其他并发滥用的违规行为。


标题图为FindBugs中找到的多线程正确性的缺陷


图2 ThreadSafe分析同样的应用



双击ThreadSafe中显示的缺陷则会在Eclipse中打开代码。


点击任何一个缺陷,则会高亮显示这个缺陷,并提供细节面板来显示更多关于该缺陷的信息。在图3中,我们选择了“Filed ‘complete’ may be synchronized inconsistently ”。你可以看到,它不仅显示其中哪些是不正确的访问,也显示哪些是正确的访问,从而真正有助于理解代码中哪些不一致。用户可以在详细信息面板中导航到该行的源代码中。用户也可以点击“(more)”链接,以在浏览器中查看更多关于该缺陷的详细信息。


ThreadSafe能清楚了解Java内存模型。在我们的项目中通过它定位的大部分代码,都是和同步不一致相关的,这除了引起多线程中的竞态条件(race condition) 外,可能导致“无中生有”的错误(注:即当一个线程在没有同步的情况下读取变量,它可能会得到一个过期值,但是至少它可以看到那个线程在当时设定的一个真实数值。而不是凭空而来的值。这种安全保证,称之为最低限的安全性)


InfoQ故意引入一个潜在的“致命拥抱”死锁(注:一个线程在等待一个资源释放的时候,存在死锁)到代码库,ThreadSafe并没有找到它。我们向Contemplate CSO David Aspinall询问了这个问题,他承认道:


我们在ThreadSafe中有一些线程死锁分析的功能,但其功能有限。在Contemplate中,我们有更复杂的死锁分析功能,这些是我们在咨询项目中使用的工具。当我们能确保使用ThreadSafe错误率足够低时,就会在未来计划将这些特性加入到产品中。


InfoQq也询问了Aspinall是否了解Brian Goetz的concurrency annotations项目。他回答道:


事实上,我们已经在分析引擎中支持这些特性,但目前还没向用户发布。这将在我们下一个更新版本中发布。


我们询问了Contemplate CEO Derick James关于价格方面的问题:


我们的价格体系是按项目license收费。我们有一个基于代码行产品线规模的license收费模式,该做法和我们看到许多的商业代码质量产品的收费模式是一样的。


关于该公司背景和产品的信息:Contemplate公司是一家成立于2009年,从英国爱丁堡大学信息学院分拆出来的公司。ThreadSafe是其第一款产品,它基于5年的学术和工业研究方案,在研究新一代先进的技术方案分析的基础上设计而成。


在公开发布ThreadSafe前,Contemplate宣称他们和多家国际投资银行紧密合作以证明他们的产品能用于分析复杂的商业多线程代码。


用户可以通过发送电子邮件到contact@contemplateltd.com申请ThreadSafe的试用版本。在东亚区可以从Architect Group获得ThreadSafe。


***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 成都下周全城整治清理“烈性犬” 年前挖的坑都填了吗?技术债务偿还计划 程序员VS武林高手:技术为外功,思维乃内力 腾讯游戏大数据服务场景与应用(附PPT) 偷师饿了么:怎样用HTTP/2优化iOS APP网络层次架构?
猜您喜欢 一周阅读推荐 #1 生活不止有苟且,还有N个免费DevOps开源工具 在Django中实现一个高性能未读消息计数器 深度学习及其在淘宝图像应用探讨 道一声感恩,做一世伙伴