10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

线程安全并发静态分析工具发布首个公开 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:124510
用户头像

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

关注

评论

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

ToB业务迎来连续增长,腾讯云的华丽转身

ToB行业头条

瓴羊Quick BI 填报组件让数据分析和可视化呈现轻而易举

对不起该用户已成仙‖

专科非科班怎么选择培训机构

小谷哥

零基础学web前端,哪些培训机构比较好

小谷哥

KCL 与其他 Kubernetes 配置管理工具的异同 - Kustomize 篇 [一个自研编程语言能做什么?(系列 2)]

Peefy

开发者 工具 编程语言 Kubernetes Serverless #DevOps

通过WSL2运行GUI程序

吴脑的键客

WSL2 GUI

聊聊产品中的状态机设计

产品海豚湾

产品经理 产品设计 产品开发 需求分析 主业务流程梳理

socket是并发安全的吗

C++后台开发

网络编程 socket 多线程 TCP/IP Linux服务器开发

mysql转国产数据库Gbase 8s 常见函数脚本

@下一站

数据库 12月日更 12月月更 Gbase8s 国产软件

学习大数据该怎么选择培训机构?

小谷哥

低代码实现探索(五十四)低代码的描述文本

零道云-混合式低代码平台

互联网时代,云计算的 6 大特征

Finovy Cloud

云计算 云渲染

极光笔记 | 以静制动:行为触发营销助力用户转化

极光GPTBots-极光推送

营销 运营 消息推送 用户运营

chatGPT的爆火,是计算机行业这次真的“饱和”了?

千锋IT教育

AH协议

穿过生命散发芬芳

12月月更 AH协议

跬智信息(Kyligence)荣登「甲子20」中国数据智能领域最具商业潜力科技企业榜

Kyligence

大数据 数据分析 数据智能 指标中台

可视化:数据可视化发展史

Data 探险实验室

数据分析 可视化 数据可视化

2022-12-15:寻找用户推荐人。写一个查询语句,返回一个客户列表,列表中客户的推荐人的编号都 不是 2。 对于示例数据,结果为: +------+ | name | +------+ | Wil

福大大架构师每日一题

数据库· 福大大

行业分析| 智慧头盔在快对讲上的应用与实践

anyRTC开发者

音视频 智能设备 视频通话 快对讲 智慧头盔

2021最强网易Java岗面试题,(实战篇)进大厂必备~不看后悔

钟奕礼

Java 程序员 java面试 java编程

第五届“强网”拟态防御国际精英挑战赛在南京举行

科技热闻

当打造一款极速湖分析产品时,我们在想些什么

StarRocks

数据湖 湖仓一体

java软件培训班毕业后找工作吗

小谷哥

openEuler 倡议建立 eBPF 软件发布标准

openEuler

开源 云原生 操作系统 内核 ebpf

5分钟带你彻底掌握async底层实现原理!

千锋IT教育

从vivo的创新方法论中,读懂高端突破的“因果”

脑极体

2021最新百度Java岗四轮面试题,(三轮技术面+一轮HR面)

钟奕礼

Java 程序员 java面试 java编程

节能降耗 | AIRIOT智慧电力综合管理解决方案

AIRIOT

物联网 智慧电力

最新2021快手面试Java岗面经,成功手拿offer,开心到飞

钟奕礼

Java 程序员 Java 面试 java编程

漏洞挖掘之命令注入漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

北京哪家web前端开发机构比较好?

小谷哥

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