问题忽略方式
当通过代码检查发现的问题,经过评估后认为需要忽略时,平台目前提供了如下的忽略方式:
忽略方式 | 说明 |
---|---|
注释忽略 | 通过代码注释的形式忽略问题。 |
平台忽略 | 在平台页面操作进行问题忽略。 |
路径过滤 | 过滤路径来忽略问题。 |
规则移除 | 移除规则来忽略问题。 |
问题基线 | 配置问题基线时间来忽略问题。 |
注释忽略
提示
代码注释忽略能更好的适应云原生,工具通用,避免代码扩散到其他分支、仓库、文件系统等,导致需处理重复问题。
- 代码注释忽略能够跟随源码迭代更新,其他问题忽略方式都需要依托平台。
忽略格式
示例:// NOCA:规则名称(忽略原因),规则名称(忽略原因),...
注释位置:问题行行尾,或问题行上一行。
- 如果是文件型规则,问题行会是文件首行,则对应注释加在首行即可。
注释格式:按对应语言的注释格式,参见示例。
NOCA:必填,忽略标记,后面使用英文冒号与规则名分隔。
规则名:必填,多个规则用英文逗号分隔。
- 圈复杂度的规则名为:
CCN
。
- 圈复杂度的规则名为:
忽略原因:必填,放在英文括号中,跟在规则名后面,用来说明忽略该规则问题的原因。
提示
以 C++ 代码注释格式为例:
- 忽略单个规则:
// NOCA:DirtyWord(设计如此:该语境下不是脏字)
。 - 忽略多个规则:
// NOCA:DirtyWord(设计如此:该语境下不是脏字),invalid-name(其他:老代码先不改)
。 - 忽略文件型规则:首行添加
// NOCA:LowCommentRatio(设计如此:逻辑较简单,不需要过多注释)
即可。
各语言代码注释忽略示例
以下所提到的文件后缀名不区分大小写。
适用于文件: .c
、.cpp
、.h
、.hpp
、.m
、.mm
、.swift
、.go
、.cxx
、.cc
、.cs
、.json
、.proto
、.pch
、.mod
、.java
、.kt
、.js
、.jsbundle
、.jsx
、.ts
、.tsx
、.vue
、.css
、.scala
、.dart
。
// C++ Program Demo
#include <iostream>
int main() {
// NOCA:DirtyWord(误报,该语境下不是脏字)
std::cout << "这是一个傻瓜式教程。";
std::cout << "这是一个傻瓜式教程。"; // NOCA:DirtyWord(误报,该语境下不是脏字)
return 0;
}
适用于文件:.py
。
def main():
'''
傻瓜化式创建 # NOCA:dirty_check(误报),DirtyWord(误报,这里的傻瓜化不是傻瓜)
'''
# NOCA:DirtyWord(误报)
print("这是一个傻瓜式教程。")
print("这是一个傻瓜式教程。") # NOCA:DirtyWord(误报)
适用于文件:.lua
。
<?php
# NOCA:DirtyWord(误报,该语境下不是脏字)
echo "这是一个傻瓜式教程。<br>";
// NOCA:DirtyWord(误报,该语境下不是脏字)
echo "这是一个傻瓜式教程。";
echo "这是一个傻瓜式教程。"; // NOCA:DirtyWord(误报,该语境下不是脏字)
?>
适用于文件:'.yml', '.yaml', '.toml', '.conf', '.properties', '.sh'
version: '2.0'
stages:
- stage: demo测试
tasks:
# NOCA:DirtyWord(误报,该语境下不是脏字)
- title: 傻瓜式教程
message: "这是一个傻瓜式教程" # NOCA:DirtyWord(误报,该语境下不是脏字)
适用于文件:'.md'
# MarkDown demo
## 操作指引文档
[注释]: NOCA:DirtyWord(误报,该语境下不是脏字)
1. 这是一个傻瓜式教程。
<!-- NOCA:DirtyWord(误报,该语境下不是脏字) -->
2. 这是一个傻瓜式教程。
适用于文件:'.ini'
; 参数配置文件
[config]
; NOCA:DirtyWord(误报,该语境下不是脏字)
message: 这是一个傻瓜式教程
适用于文件:.xml
、.html
、htm
、.vcproj
、.vcxproj
。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="test.css" ?>
<root>
<book-name>My Magic Book</book-name>
<book-author>author: Harry Potter</book-author>
<!-- NOCA:DirtyWord(误报,该语境下不是脏字) -->
<short-desc>这是一个傻瓜式教程</short-desc>
</root>
适用于文件:.lua
。
-- NOCA:DirtyWord(误报,该语境下不是脏字)
print("这是一个傻瓜式教程!")
print("这是一个傻瓜式教程!") -- NOCA:DirtyWord(误报,该语境下不是脏字)
平台忽略
直接在平台上操作忽略问题即可,会将问题解决方式标记如下:
解决方式 | 描述 |
---|---|
测试/无用代码 | 业务实际未使用漏洞所在的代码。 |
重复问题 | 问题已在其它分支中解决。 |
工具误报 | 该代码无问题,工具分析不准确(可协助平台发现误报率较高的规则并进行优化)。 |
无需修复 | 工具分析无误,但该代码设计如此,或因历史原因修复成本高,暂时无需处理。 |
全局问题忽略
在对问题进行忽略时,希望代码库内其他分析项目发现相同问题时,同步忽略掉,则可以配置全局问题忽略。
注意
如进行了全局忽略操作,当代码库内其他分析项目全量分析后,会使用当前忽略方式忽略相同问题,请谨慎操作!
生效策略:其他分析项目需要全量分析后才会忽略相同问题,而非操作完毕就忽略了。
排除范围:如果分析项目关闭了问题忽略同步开关,则不会同步忽略。
路径过滤
提示
通常适用于对应问题所在文件属于测试/无用代码文件,需要将目录/文件进行路径过滤,从而忽略问题。
请查看路径过滤配置文档
规则移除
提示
通常适用于评估规则后,认为该规则有效性不高,或当前不关注该规则问题的场景。可以通过移除/屏蔽对应问题规则,从而忽略问题。
- 会将问题解决方式标记为规则移除。
请查看规则配置文档
问题基线
提示
通常适用于分析项目问题量太大,但是又不想处理历史负债,可以通过配置新问题基线时间,从而忽略问题。
- 会将问题解决方式标记为历史问题。
请查看基础配置文档