写点什么

线程安全并发静态分析工具发布首个公开 beta 版本

  • 2013-10-08
  • 本文字数:1658 字

    阅读完需:约 5 分钟

英国的 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 内存模型的错误应用和其他并发滥用的违规行为。

图 1 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。

查看英文原文: ThreadSafe Concurrency Static Analysis Tool Announces First Public Release


感谢侯伯薇对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-10-08 05:124608
用户头像

发布了 81 篇内容, 共 28.6 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

为大模型工程提效,基于阿里云 ACK 的云原生 AI 工程化实践

阿里巴巴云原生

阿里云 AI 云原生

MSE Nacos:解决敏感配置的安全隐患

阿里巴巴云原生

阿里云 微服务 云原生 nacos

FlagData 2.0:全面、高效的大模型训练数据治理工具集

mr.well

NLP 大模型 LLM模型 #大模型

随想2024.01.21

hackstoic

精力管理

Nacos 2.3.0 正式版发布,Nacos Controller 项目开源

阿里巴巴云原生

阿里云 云原生 nacos

工作中常用到的java8相关操作总结

智慧源点

stream java8 LocalDateTime Optional

淘宝/天猫获取卖出的商品订单列表 API(taobao.seller_order_list)

技术冰糖葫芦

API

文心一言 VS 讯飞星火 VS chatgpt (183)-- 算法导论13.4 7题

福大大架构师每日一题

福大大架构师每日一题

调研 7 个开源项目后,这家数据合规平台如何构建高性能网关

阿里巴巴云原生

阿里云 云原生

改变命运的抉择

少油少糖八分饱

小说 命运 东野圭吾 推理小说 悬疑

阿里云 ACK 云原生 AI 套件中的分布式弹性训练实践

阿里巴巴云原生

阿里云 分布式 云原生

Seata 2.x 首个版本正式发布,支持 Raft 集群模式

阿里巴巴云原生

阿里云 云原生 seata

2023年的技术总结和工作反思

芯动大师

年终总结

恭喜 Apache Dubbo 和 Nacos 荣获开放原子“2023年度生态开源项目”

阿里巴巴云原生

阿里云 开源 云原生

当 OpenTelemetry 遇上阿里云 Prometheus

阿里巴巴云原生

阿里云 云原生 可观测

2023启示录丨我的大模型创业这一年

自象限

创业 #大模型

活动回顾丨阿里云云原生 Serverless 技术实践营西安站 PPT 下载

阿里巴巴云原生

阿里云 Serverless 云原生

Nacos 在云原生架构下的演进

阿里巴巴云原生

阿里云 云原生 nacos

线程安全并发静态分析工具发布首个公开beta版本_Java_Vikram Gupta_InfoQ精选文章