新闻中心

广州联成检测服务有限公司新闻中心:公司动态、中标信息、行业政策与软件测评技术资讯。

源代码自主率到底怎么算:T/ISC 0043—2024 核心内容读解

发布时间: 来源:广州联成检测服务有限公司

源代码自主率到底怎么算:T/ISC 0043—2024 核心内容读解

近两年,「代码自主可控」从一句口号变成了能被打分的指标。政务信息化项目验收、国企采购招标、首版次软件申报,越来越多地把代码自主率列为评审项,甚至直接在招标文件里写明阈值。随之而来的问题是:这个数到底怎么算出来的,谁算才算数。

目前国内这一领域最常被引用的技术依据,是 2024 年 1 月由中国互联网协会归口发布的团体标准 T/ISC 0043—2024《软件代码自主率测评方法》,2024 年 2 月 28 日实施,现行有效。该标准由中国信息通信研究院牵头,联合中国移动设计院、中国电力科学研究院、中国民航信息网络、中国石油昆仑数智等单位共同起草,适用范围写得很明确:既可用于软件开发企业自评,也可用于第三方检测机构开展软件产品的代码自主率检测。

本文仅从技术角度解读这份标准的核心内容,供准备送检或撰写招标技术要求的单位参考。

一、计算方式不是「自研行数 ÷ 总行数」

很多人对代码自主率的直觉理解是「自己写的代码行数占总行数的比例」。这个理解只对了一半。标准给出的是带有惩罚项的计算式:

CAR = (SCL / TCL) × (1 − Σα×OSR − β×OCR)

其中各项的含义是:

  • SCL:自主开发的有效代码行数,即去掉注释后的自主代码行数;
  • TCL:有效代码总行数,去掉注释与空行;
  • OSR:开源源代码行数占有效代码总行数的比例;
  • OCR:开源组件或文件数量占总文件数量的比例;
  • α:开源源代码的协议权重;β:开源组件的协议权重。

关键在于后面那一项。它意味着:即使两套软件的「自研代码占比」完全相同,只要引用的开源组件许可证不同,最终得分也会不同——协议约束力越强、传染性越高的开源代码,对自主率的扣减越重。这也解释了为什么同样的代码规模,有的产品报出来的自主率相差一二十个百分点。

二、四项检测内容,代码扫描只占其中一项

标准把检测内容拆成四块,只有第二块是纯粹的代码扫描。

第一块,相关软件的自主可控性检测。对软件运行所依赖的操作系统、数据库、Web 中间件及其他必需软件(如 FTP 等)分类评估:某一类如果送检软件根本不含,该类视为合格;含有的,要评估是否具备充分可替代性(包括国产替代路径),或者是否为完整开源软件且送检方具备修改能力与授权。某一类不合格,该类按 25% 计分。

第二块,开源组件依赖性检测。标准要求「工具检测」与「人工审核」组合使用:先用成熟的商业成分分析工具扫描项目,识别代码成分组成;再由人工审核扫描结果,分析成分构成,判断组件缺陷的危害程度,评估许可证风险;最后与送检方确认最终的开源组件依赖清单。这一步的产出是后续计算的输入,也是实际最容易产生分歧的地方——工具识别的组件版本与送检方自述不一致时,需要逐项核对。

第三块,代码总行数检测。用工具统计源代码部分的行数,配置文件计入,注释与空行扣除,原则上按分行符计算。标准留了一个弹性条款:若软件总行数小于代码命令数的 10%,检测方可酌情考虑是否按代码结束符计算。

第四块,代码安全性检测。先对源代码做静态安全审计,再对运行环境做系统扫描。漏洞结果由检测方专家审核,严重漏洞指可直接利用、造成重要数据泄露或代码泄露、恶意文件上传、软件被篡改操纵、软件无法正常运行等情况。计分方式为:代码安全性得分 =(严重漏洞数 × 5%)+ 高危漏洞数 ÷(代码总数 ÷ 10000)× 1%。标准同时给了一条务实的规定:因不合理配置导致的漏洞,如果送检方可以通过合理配置消除,该漏洞可以忽略。

三、送检要准备什么

标准列了明确的送检清单,共八项:软件基本情况、软件著作权、软件功能清单(含功能简介)、软件安装手册(含完整安装所需的操作系统、数据库、中间件)、软件使用手册、软件源代码(含代码与配置文件等编译所需内容)、软件所使用开源组件清单(含组件名称、版本号、许可协议类别)、诚信承诺书(对提交内容的真实性与完整性作出承诺,并承诺拥有送检软件的全部权利、不存在第三方产权纠纷)。

另外两点容易被忽略。一是检测环境需由检测方与送检方共同搭建:送检方负责按安装手册完成运行环境与代码编译环境部署,并确保所部署的代码是送检系统的完整代码;检测方负责提供硬件与操作系统环境。二是检测前要验证前置条件:所安装软件包含功能清单中的全部功能,所用操作系统、数据库、中间件等与清单一致。这项验证没通过,测试无法开始。

四、三个常见误区

误区一:把工具扫描结果直接当结论。商业成分分析工具对混淆代码、二次封装组件、修改过的开源代码识别率有限,标准明确要求人工审核环节。直接拿工具报告当最终结论,遇到评审追问很难解释。

误区二:只准备源代码,其余材料临时补。八项清单里,软件著作权与诚信承诺书直接关系到权属证明,开源组件清单则是计算的输入之一。这些材料缺失或不一致,会直接卡住检测。

误区三:把自主率当成一次性达标的数字。自主率是特定版本在特定依赖关系下的计算结果。换版本、换依赖、换许可证组合,数值都会变。把它理解为「当前这一版的体检结果」更准确。

关于本文的说明

本文依据 T/ISC 0043—2024 标准文本整理,仅作技术解读,不构成检测服务承诺。需要说明的是:代码自主率测评属于代码审计与软件成分分析,不在广州联成检测服务有限公司 CNAS 实验室认可范围之内,我司目前未开展该项检测业务。之所以整理这份解读,是因为不少客户在准备验收或申报材料时,会把「软件测试报告」与「代码自主率测评报告」当成同一件事,导致材料准备方向偏差——把两者的关系讲清楚,本身也是我们作为第三方检测机构该做的事。

关于送检材料清单、前置条件与测评结果如何使用的完整说明,另见业务栏目源代码自主率测评。

如需讨论软件功能、性能、信息安全等常规测试需求,可致电 020-32204739。

需要源代码自主率到底怎么算:相关服务?立即致电 020-32204739