OAT开源审查工具【免费下载链接】infrastructure本仓库用于托管CANN社区基础设施团队的公开信息包括不限于会议日程成员信息服务文档和配置等信息项目地址: https://gitcode.com/cann/infrastructure目的本文档旨在为开发者提供明确的指引当社区门禁系统中code_check扫描任务检测到由OATOSS Audit Tool发出的开源合规告警时应如何理解、分析并采取正确的操作步骤进行处理。范围本指导适用于所有参与CANN社区的贡献者项目适用范围包含CANN下代码仓。OAT问题确认开源仓代码扫描时候会根据OAT默认规则进行分析不满足则会在OAT扫描报告中呈现出如下的问题。具体处理流程如下具体分析操作如下问题一为什么测试文件/配置文件也被报出许可证问题告警示例问题原因OAT 工具默认会对仓库中所有文件进行扫描。但某些文件如tests/目录下的单元测试脚本、pyproject.toml等构建配置文件本身不涉及核心功能或不具备版权敏感性无需纳入许可证合规检查。这类文件若被扫描容易误报为“无许可证头”或“未知许可证”增加无效告警负担。正确做法将这些非源码类或无需审计的文件/目录加入屏蔽列表在项目根目录的OAT.xml中配置过滤规则。操作示例屏蔽整个测试目录filefilter namedefaultFilter descFiles not to check filteritem typefilepath nametests/.* descTest files do not require license check/ /filefilter屏蔽特定配置文件如 toml 文件filefilter namedefaultFilter descFiles not to check filteritem typefilename namepyproject.toml descConfiguration file, no license required/ /filefilter⚠️ 注意使用filepath可匹配路径正则使用filename匹配具体文件名修改后需提交至主干并同步到 CI 环境才生效。问题二告警说用了某个许可证如 CANN-2.0但确认是可以用的怎么办告警示例问题原因OAT 扫描发现代码中声明使用了某个许可证例如CANN-2.0但由于该许可证未在当前项目的白名单中注册系统无法识别其合法性因此标记为风险项。 这并不意味着许可证不能用而是工具“不认识它”。正确做法明确告知 OAT这个许可证是允许使用的。你需要在项目根目录的OAT.xml中将其添加到许可策略中。操作示例policylist policy nameprojectPolicy descProject allowed licenses policyitem typelicense nameCANN-2.0 path.* descApproved CANN license/ /policy /policylist✅ 要求name字段必须与扫描报告中的许可证名称​完全一致​path.*表示适用于全仓文件也可按需限定路径。✅ 完成后下次扫描将不再提示该许可证为非法问题三为什么提示“NoLicenseHeader”告警示例问题原因“NoLicenseHeader” 表示该文件缺少标准的许可证声明头部注释。常见于以下两类情况类型是否需要补头自研代码文件.c,.h,.py等✅ 建议补充上游引入的第三方开源文件❌ 不应修改原内容如果你的文件属于第二种比如从上游社区 copy 的代码原始就没有许可证头此时报错是合理的误报。正确做法根据文件性质选择处理方式✅ 场景 A这是自研代码 → 补充许可证头在文件顶部添加如下标准声明以 CANN-2.0 为例/* * This program is free software, you can redistribute it and/or modify it under the terms and conditions of * CANN Open Software License Agreement Version 2.0 (the License). * Please refer to the License for details. You may not use this file except in compliance with the License. * THIS SOFTWARE IS PROVIDED ON AN AS IS BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. * See LICENSE in the root of the software repository for the full text of the License. */✅ 场景 B这是上游引入文件 → 屏蔽检查保持原始内容不变在项目根目录的OAT.xml中通过defaultPolicyFilter忽略该文件的许可证头检查。filefilter namedefaultPolicyFilter descFiles exempt from license header checks filteritem typefilepath name/example/atb_aclnn/memory/memory_utils.h descThird-party upstream file without license header/ filteritem typefilename namememorypool.cpp descImported code, no header modification allowed/ /filefilter 原因说明建议写清楚便于后续审计追溯。问题四出现“InvalidLicense”告警工具识别不出许可证告警示例问题原因OAT 无法匹配到已知许可证库中的条目可能因为许可证文本格式有微小差异空格、换行、标点等使用了新定义或定制化的许可证如 CANN-2.0 尚未收录文本编码或大小写导致特征不匹配。 此时会报InvalidLicense表示“识别失败”而非“禁止使用”。正确做法先人工确认许可证内容是否合法 → 再决定如何让工具能识别它。步骤 1人工分析 法务确认查看告警文件中的许可证声明原文提交法务团队确认该许可证是否可用于本项目若不可用 → 需替换或移除相关代码若可用 → 继续下一步。步骤 2选择一种方式让 OAT 能识别该许可证方式 A向 OAT 工具提交许可证定义推荐长期使用 提交流程OAT Gitcode 仓库要求提取许可证正文转为小写去除所有符号和空格填入 JSON 格式的 license definition。示例{ licenseHeaderText: thisprogramisfreesoftwareyoucanredistributeitandormodifyitunderthetermsandconditionsofcannopensoftwarelicenseagreementversion20thelicensepleaserefertothelicensefordetailsyoumaynotusethisfileexceptincompliancewiththelicensethissoftwareisprovidedonanasisbasiswithoutwarrantiesofanykindeitherexpressorimpliedincludingbutnottononinfringementmerchantabilityorfitnessforaparticularpurposeseelicenseintherootofthesoftwarerepositoryforthefulltextofthelicense, licenseHeaderTextLength: 450, licenseId: CANN-2.0, licenseName: CANN Open Software License Agreement Version 2.0, licenseText: ...same as above..., urls: [] }✅ 优点一次提交多仓受益❗ 缺点需等待工具版本发布才能生效方式 B在当前仓配置本地匹配规则快速生效直接在项目根目录的OAT.xml中添加licensematcher规则​原样复制许可证头/文本内容​注意转义引号Copyright版权信息不要写入。licensematcherlist licensematcher nameCANN-2.0 descCustom license matcher for InvalidLicense fix licensetext name * This program is free software, you can redistribute it and/or modify it under the terms and conditions of * CANN Open Software License Agreement Version 2.0 (the quot;Licensequot;). * Please refer to the License for details. You may not use this file except in compliance with the License. * THIS SOFTWARE IS PROVIDED ON AN quot;AS ISquot; BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE. * See LICENSE in the root of the software repository for the full text of the License. descMatch CANN-2.0 license header/ /licensematcher /licensematcherlist✅ 优点提交即生效适合紧急修复❗ 缺点每个仓库都要重复配置维护成本高 建议优先走方式 A 提交公共库方式 B 作为过渡方案【免费下载链接】infrastructure本仓库用于托管CANN社区基础设施团队的公开信息包括不限于会议日程成员信息服务文档和配置等信息项目地址: https://gitcode.com/cann/infrastructure创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考