测试工具-----Sonarqube
sonarqube的介绍
sonarqube主要用于代码静态分析,用于检查代码是否存在存在的格式,bug,安全漏洞问题,同时也提供了复杂度,代码 行数等质量度量数据.
- 代码静态分析(Program Static Analysis)是指在不运行代码的方式下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术
sonarqube使用的场景
- 开发代码中实时检查:可以装插件,然后根据自己指定的规则对代码进行扫描,然后就会实时反馈代码里面的问题。
优点:可以快速发现问题和解决问题,
- 开发代码完毕,提交代码到配置库之后,定期或者不定期扫描,
缺点:它是在代码开发完成之后才进行扫描,任务量大,此时发现问题和修改问题的成本就会变得的很大
SonarQube的特性
1、易于安装,开箱即可启动
2、易于配置,所有配置可以通过其提供的web界面实现
3、可以与CI系统,例如jenkins完美集成
4、丰富的扫描规则,支持自定义,并可以集成findbugs,pmd,checkstyle等插件
5、丰富的格式支持,可以扫描java\js\xml\jsp等多种格式
6、丰富的统计功能,例如覆盖率,代码行数
7、支持违规的处理、分配等工作流,可以扫描的有问题的代码进行处理,
8、可以对违规进行确认,误报的违规一次确认后将不再统计在内,如果工具有误报,工具认为是bug,此时可以进行设置下次遇到同样的问题,工具就不会认为它是bug
9、支持maven\ant\命令行等方式扫描
安装SonarQube(Linux下)
sonarqube分为以下产品组:
sonarqube更新频繁,更新会导致一些插件的不可用
- sonarqube:sonarqube是一个web平台,是sonarqube的基础,统一管理插件和规则,统一展现度量数据
- SonarQube Scanners:命令行扫描工具,进行代码的静态扫描
- SonarQube Plugins:插件,支持多种语言
- SonarLint:IDE集成插件
1.先从本地把软件包导入到服务器或者虚拟机上
2.解压sonarqube: 命令 unrar x sonarqube-6.4.rar
3.修改配置文件
修改端口号:vi xxx/sonarqube-6.4/conf/sonar.properties
注意:一半都使用的是默认端口号,如果默认的端口号被占用才需要去修改端口号,一般不要组修改端口号。
因为我的默认9000端口号没有被占用,所以不要修改。
4.启动sonarqube
在sonarqude的安装包的bin目录里的linux-x86-64下边有他的启动命令
可以使用该命令进入该目录: cd ./sonarqube-6.4/bin/ linux-x86-64/
启动sonarqube: 因为我是root权限所以我不用root命令
第一次启动:sudo ./sonar.sh start
第二次启动:sudo ./sonar.sh restart
查看sonarqube的状态:./sonar.sh status
必须要在: sonar.sh的路径下执行该命令,否则会显示找不到该文件:/sonarqube-6.4/bin/linux-x86-64
出现问题:
1.输入命名后说我权限拒绝
解决方法:
修改sonar.sh的文件权限
登录sonqrqube
注意:第一次的登录sonarqube他的账户和密码都是admin
sonarqube目录结构如下:
- bin:启动、停止命令目录
- conf:配置目录,可以配置端口、数据库等信息
- data:数据存放目录,子目录es,web为缓存的数据目录,可以删除,删除后会自动生成。
- extensions\plugins:插件存放目录,手工下载的插件需要放在该目录
- lib:依赖jar
- logs:日志文件
- temp:临时文件目录,可以删除
- web:web目录,不可以删除,开发语言为ruby
安装插件sonarqube插件
1.在sonarqube的web页面进行插件的安装
2.如果web端安装插件失败可以在,Linux环境在安装插件。在sonarqube的目录下有一个扩展包文件extension文件里面有个plugins文件下装的就是插件,我们可以把自己的插件文件放入这个包下边,然后重新启动sonarqube使插件效
安装sonarscanner
1.先把安装包导入本地服务器:
2.解压:unrar x sonar-scanner-cli-3.0.3.778-linux.rar
3.配置sonarscanner的环境变量(集成Jenkins需要配置)
命令:vi /etc/profile
SONAR_RUNNER_HOME=/root/sonar-scanner-cli-3.0.3.778-linux
PATH=$SONAR_RUNNER_HOME/bin:$PATH
export SONAR_RUNNER_HOME
export PATH
执行source /etc/profile使/etc/profile生效
练习一:sonarscanner扫描
(此次测试采用的sonarqube默认的质量阀)
1.把自己的Java项目放入Linux环境下
2.在项目目录下,创建一个sonar-project-properties文件,来定义当前项目的自动化命令行扫描文件
扫描规则:
# 工程关键字,整个系统中唯一,可修改,一般设为项目英文名
sonar.projectKey=sonar
# 工程名,一般设为项目英文名
sonar.projectName=sonar
# 工程版本号,可设置为项目的版本号
sonar.projectVersion=1.0
# 工程存放目录,.表示当前路径,不用修改
sonar.projectBaseDir=.
# 设置扫描JAVA还是PLSQL,设为 JAVAmodule,PLSQLmodule则同时扫描两个
sonar.modules=JAVAmodule
# 不进行扫描的文件
# sonar.exclusions=test/*.java,b.java
# JAVAmodule的工程名称,可修改
JAVAmodule.sonar.projectName=sonar_java
# JAVAmodule的扫描语言,不可修改
JAVAmodule.sonar.language=java
# 源码存放目录,可设置为src,java等多个目录,.表示当前路径下所有文件
JAVAmodule.sonar.sources=.
# 源码字符集,根据实际修改
JAVAmodule.sonar.sourceEncoding=UTF-8
# 设置工程使用的JDK版本,需要修改,可能影响扫描结果
JAVAmodule.sonar.java.source=1.6
# 工程存放路径,不用修改
JAVAmodule.sonar.projectBaseDir=.
# 以下两项在编译后添加,部分安全规则需要二进制文件,这时需要设置以下两项
# 编译后的二进制文件目录
# JAVAmodule.sonar.java.binaries=.
# 依赖jar包目录
# JAVAmodule.sonar.java.libraries=.
# PLSQLmodule的工程名称,可修改
PLSQLmodule.sonar.projectName=sonar_plsql
PLSQLmodule.sonar.language=plsqlopen
# 源码存放目录,可以逗号分隔填写多个目录
PLSQLmodule.sonar.sources=sql
PLSQLmodule.sonar.sourceEncoding=GBK
PLSQLmodule.sonar.projectBaseDir=.
扫描规则制定为,然后执行:
- 1.执行代码: sudo /root/sonar-scanner-3.0.3.778-linux/bin/sonar-scanner
- 2.以debug模式执行代码: sudo /root/sonar-scanner-3.0.3.778-linux/bin/sonar-scanner-debug
3.在命令行扫描完成之后会在sonarqube的web端有一个扫描结果分析,里面有代码的覆盖率,重复率,多少个bug,多少个漏洞等等
2.自己创建质量阀
1).创建质量阀
2).添加质量阀:
里面可以设置复杂性的,覆盖率的,关于Bug问题的(拦截bug,新的Bug,确认Bug,严重bug等),可靠性,可维护性等
3).勾选测试的项目,然后测试时质量阀就会应用到该项目上面去
4).质量配置
激活更多的质量规则
到这里质量阀就将好了,他就可以应用到项目里
其他功能:
1.创建用户
查看之前运行过的任务
jenkins和sonarqube集成
启动jenkins的最简单指令:
nohup java -jar jenkins.war --httpPort=80
1.-如何把jenkins和sonarqube关联起来
1)在jenkins里面有一个sonarqube的插件
2)在全局工具配置里面进行配置
配置sonarscanner插件的加路径
3)在系统设置里面配置sonarqube的服务器
首先在sonarqube里面创建sonarqube服务器的指令令牌
配置sonarqube的服务器指令令牌
此时jenkins和sonarqube就建立了联系
4)在jenkins里面的构建里查看是否有sonarqube
SonarQube 里面的部分代码规则
“&&”和“||” 应该使用 |
PHP Bug 可疑 |
“.equals()”不应用于测试“原子”类的值 |
Java Bug 多线程 |
“<>”不应用于测试不平等 |
Python 代码嗅觉 过时的 |
应使用“<?php”和“<?=”标签 |
PHP 代码气味 惯例,psr1 |
不应使用“= +”代替“+ =” |
JavaScript Bug |
不应使用“= +”代替“+ =” |
C# Bug |
当覆盖“等于”时,不应使用“==”和“!=” |
Java Code Smell 证书,cwe,可疑 |
当“等于”被覆盖时,不应使用“==” |
C# 代码气味 证书,cwe,可疑 |
应使用“===”和“!==”代替“==”和“!=” |
JavaScript 代码气味 可疑 |
应使用“===”和“!==”代替“==”和“!=” |
Flex Code Smell 可疑 |
不应使用“@Deprecated”代码 |
Java Code Smell 证书,cwe,已过时 |
“@NonNull”值不应设置为null |
Java Bug |
“@Override”应该用于覆盖和实现方法 |
Java Code Smell 坏实践 |
“@RequestMapping”方法应该是“公开的” |
Java 漏洞 弹簧 |
当“[DefaultParameterValue]”表示时,不应使用“[DefaultValue]” |
C# 代码气味 可疑 |
“[可选]”不应用于“ref”或“out”参数 |
C# 代码气味 陷阱 |
“[type = ...]”应该用于按类型选择元素 |
JavaScript 代码气味 jquery,表现 |
“\”只能用作原始字符串之外的转义字符 |
Python 代码嗅觉 |
“__construct”函数不应该对父构造函数进行PHP 4样式的调用 |
PHP 代码气味 惯例 |
“__exit__”应该接受type,value和traceback参数 |
Python Bug |
“__init__”不应返回值 |
Python Bug |
“抽象”类不应该有“公共”构造函数 |
C# 代码气味 扑朔迷离 |
“动作”映射不应该有太多“前进”条目 |
Java Code Smell 脑过载,支柱 |
不应使用“alert(...)” |
JavaScript 漏洞 cwe,用户体验 |
不应使用“Alert.show(...)” |
Flex 漏洞 cwe,用户体验 |
应禁用“allow_url_fopen”和“allow_url_include” |
PHP 漏洞 cwe,owasp-a1,php-ini,sans-top25-risky |
应该使用“任何()”来测试空虚 |
C# 代码气味 笨拙 |
不应直接访问“参数” |
JavaScript 代码气味 api-design,es2015 |
不应使用“arguments.caller”和“arguments.callee” |
JavaScript 代码气味 过时的 |
“Arrays.stream”应该用于原始数组 |
Java Code Smell 性能 |
不应该调用“Assembly.GetExecutingAssembly” |
C# 代码气味 性能 |
应该使用“Assembly.Load” |
C# 代码气味 不可预知的 |
“async”和“await”不应用作标识符 |
C# 代码气味 陷阱 |
“async”方法不应返回“void” |
C# Bug 多线程 |
如果“base”不是“object”,则“base.Equals”不应用于检查“Equals”中的引用相等性 |
C# Bug |
不应使用“BigDecimal(double)” |
Java Bug 证书 |
不应在循环外使用“break”和“continue” |
Python 代码嗅觉 |
“捕获”条款应该不仅仅是重新抛出 |
C# 代码气味 证书,笨拙,发现,未使用 |
“捕获”条款应该不仅仅是重新抛出 |
Java Code Smell 证书,笨拙,发现,未使用 |
应启用“cgi.force_redirect” |
PHP 漏洞 cwe,owasp-a5,php-ini |
“克隆”不应该被覆盖 |
Java Code Smell 可疑 |
“Cloneables”应该实现“克隆” |
Java Bug |
不应使用“Collections.EMPTY_LIST”,“EMPTY_MAP”和“EMPTY_SET” |
Java Code Smell 过时的,陷阱 |
不应检查“compareTo”结果的具体值 |
Java Bug 不可预知的 |
“compareTo”不应返回“Integer.MIN_VALUE” |
Java Bug |
应使用“ConfigureAwait(false)” |
C# 代码气味 多线程,可疑 |
不应使用“继续” |
JavaScript 代码气味 糟糕的做法,misra |
不应使用“CoSetProxyBlanket”和“CoInitializeSecurity” |
C# 代码气味 |
不应使用Apache Commons Lang库中的“DateUtils.truncate” |
Java Code Smell java8,性能 |
当使用对象或数组时,“defaults”应该是一个函数 |
JavaScript Bug 骨干 |
“delete”只能用于对象属性 |
JavaScript Bug |
不应在数组上使用“delete” |
JavaScript 代码气味 |
不应使用“deleteOnExit” |
Java Code Smell 性能 |
“Double.longBitsToDouble”不应该用于“int” |
Java Bug |
应使用“elseif”关键字代替“else if”关键字 |
PHP 代码气味 惯例,psr2 |
应禁用“enable_dl” |
PHP 漏洞 cwe,php-ini |
当需要键和值时,应该迭代“entrySet()” |
Java Code Smell 性能 |
“enum”字段不应该是公开可变的 |
Java 漏洞 坏实践 |
实现“IComparable”时,应该覆盖“等于”和比较运算符 |
C# Bug |
“equals”方法覆盖应接受“对象”参数 |
Java Bug 可疑 |
“equals”方法应该是对称的,适用于子类 |
Java Bug 证书 |
应该成对覆盖“equals(Object obj)”和“hashCode()” |
Java Bug 证书,cwe |
“equals(Object obj)”应该与“compareTo(T obj)”方法一起被覆盖 |
Java Bug |
“equals(Object obj)”应测试参数类型 |
Java Bug |
应该成对覆盖“Equals(Object)”和“GetHashCode()” |
C# Bug 证书,cwe |
不应绑定或分配“eval”和“arguments” |
JavaScript Bug 陷阱 |
当被调用的方法不需要时,不应该捕获“异常” |
Java Code Smell cwe,错误处理 |
不应使用“exit(...)”和“die(...)”语句 |
PHP Bug |
不应使用“foreach”循环的“显式”转换 |
C# 代码气味 可疑 |
“Externalizable”类应该没有参数构造函数 |
Java Bug |
不应使用“File.createTempFile”来创建目录 |
Java 漏洞 OWASP-A9 |
应禁用“file_uploads” |
PHP 漏洞 cwe,php-ini,sans-top25-insecure |
“最终”类不应该有“受保护”成员 |
Java Code Smell 扑朔迷离 |
“最终”不应冗余使用 |
PHP 代码气味 惯例 |
“finalize”不应将字段设置为“null” |
Java Code Smell 笨拙,表现 |
“find”应该用于选择id已知的元素的子元素 |
JavaScript 代码气味 jquery,性能,用户体验 |
应该处理“FIXME”标签 |
Python 代码嗅觉 |
“for”循环增量子句应该修改循环的计数器 |
JavaScript 代码气味 扑朔迷离 |
“for”循环增量子句应该修改循环的计数器 |
C# 代码气味 扑朔迷离 |
“for”循环增量子句应该修改循环的计数器 |
Java Code Smell 扑朔迷离 |
“for”循环停止条件应该是不变的 |
Flex Code Smell misra,陷阱 |
“for”循环停止条件应该是不变的 |
C# 代码气味 misra,陷阱 |
“for”循环停止条件应该是不变的 |
PHP 代码气味 misra,陷阱 |
“for”循环停止条件应该是不变的 |
Java Code Smell misra,陷阱 |
“for ... in”循环应该在对它们进行操作之前过滤属性 |
JavaScript Bug |
“未来保留字”不应用作标识符 |
JavaScript 代码气味 锁定,陷阱 |
不应该调用“GC.Collect” |
C# 代码气味 糟糕的做法,表现,不可预测 |
不应该调用“GC.SuppressFinalize” |
C# 代码气味 |
对于没有析构函数的类型,不应调用“GC.SuppressFinalize” |
C# 代码气味 混乱,未使用 |
“getClass”不应用于同步 |
Java Bug 证书,多线程 |
“GetHashCode”不应该引用可变字段 |
C# Bug |
不应该使用“全球” |
PHP 代码气味 惯例 |
不应使用“goto”语句 |
C# 代码气味 脑过载,misra |
不应使用“goto”语句 |
PHP 代码气味 脑过载,misra |
不应在数组实例上调用“hashCode”和“toString” |
Java Bug |
不应使用“HttpServletRequest.getRequestedSessionId()” |
Java 漏洞 cwe,owasp-a2,sans-top25-porous |
“IDisposable”应该正确实施 |
C# 代码气味 |
不应返回在“using”语句中创建的“IDisposable” |
C# Bug |
应该处理“IDisposables” |
C# Bug cwe,拒绝服务 |
应该简化“IEnumerable”LINQ |
C# 代码气味 笨拙 |
“如果......其他如果”构造应该以“else”条款结束 |
JavaScript 代码气味 证书,misra |
“如果......其他如果”构造应该以“else”条款结束 |
C# 代码气味 证书,misra |
“如果......其他如果”构造应该以“else”条款结束 |
PHP 代码气味 证书,misra |
“import”应该用于包含外部代码 |
JavaScript 代码气味 惯例,es2015,已过时 |
“in”不应与原始类型一起使用 |
JavaScript Bug |
“indexOf”检查不应该是正数 |
JavaScript 代码气味 可疑 |
“IndexOf”检查不应该是正数 |
C# 代码气味 可疑 |
“indexOf”检查不应该是正数 |
Java Code Smell 可疑 |
“indexOf”检查应使用起始位置 |
Java Code Smell 扑朔迷离 |
应删除始终返回“true”或“false”的“instanceof”运算符 |
Java Bug |
“interface”实例不应转换为具体类型 |
C# 代码气味 设计 |
不应忽略“InterruptedException” |
Java Bug cwe,多线程 |
“ISerializable”应该正确实施 |
C# 代码气味 |
“Iterator.hasNext()”不应该调用“Iterator.next()” |
Java Bug |
“Iterator.next()”方法应抛出“NoSuchElementException” |
Java Bug 不可预知的 |
不应该扩展“java.lang.Error” |
Java Code Smell 错误处理 |
“javax.crypto.NullCipher”不应用于测试之外的任何其他内容 |
Java 漏洞 cwe,owasp-a6,sans-top25-porous |
“锁定”对象不应“同步” |
Java Code Smell 证书,笨拙,多线程 |
“主要”不应该“抛出”任何东西 |
Java Code Smell 错误处理 |
不应使用“MovieClip.onEnterFrame”事件处理程序 |
Flex Code Smell 性能 |
“NaN”不应用于比较 |
JavaScript Bug 证书 |
“NaN”不应用于比较 |
C# Bug 证书 |
“new”运算符应该与函数一起使用 |
JavaScript Bug |
应该使用“notifyAll” |
Java Bug 证书,多线程 |
“null”不应与“Optional”一起使用 |
Java Bug java8 |
不应该捕获“NullPointerException” |
Java Code Smell 证书,cwe,错误处理 |
不应显式抛出“NullPointerException” |
Java Code Smell 陷阱 |
覆盖时,“Object.finalize()”应保持受保护(相对于公共) |
Java Code Smell 证书,cwe |
“Object.ReferenceEquals”不应用于值类型 |
C# Bug |
应在“while”循环内调用“Object.wait(...)”和“Condition.await(...)” |
Java Code Smell 证书,多线程 |
永远不应该在实现“java.util.concurrent.locks.Condition”的对象上调用“Object.wait(...)” |
Java Code Smell 可疑 |
“open_basedir”应限制文件访问权限 |
PHP 漏洞 cwe,php-ini |
不应在引用类型上重载“operator ==” |
C# 代码气味 陷阱 |
“可选”不应用于参数 |
Java Code Smell 笨拙 |
不应使用“out”和“ref”参数 |
C# 代码气味 可疑 |
“params”应该用于覆盖 |
C# 代码气味 扑朔迷离 |
不应在覆盖上引入“params” |
C# 代码气味 扑朔迷离 |
“部分”方法参数名称应匹配 |
C# 代码气味 证书,misra,可疑 |
“通行证”不应该被不必要地使用 |
Python 代码嗅觉 没用过 |
不应使用“php_sapi_name()” |
PHP Bug 性能 |
“前置条件”和记录参数不应该要求评估 |
Java Code Smell 性能 |
应使用有效索引调用“PreparedStatement”和“ResultSet”方法 |
Java Bug SQL |
仅由内部类调用的“私有”方法应该移动到这些类 |
Java Code Smell 扑朔迷离 |
不访问实例数据的“私有”方法应该是“静态的” |
Java Code Smell 陷阱 |
“public static”字段应该是不变的 |
Flex 漏洞 证书,cwe |
“public static”字段应该是不变的 |
Java 漏洞 证书,cwe |
应使用“read”和“readLine”返回值 |
Java Bug |
“readObject”不应该“同步” |
Java Code Smell 扑朔迷离 |
“readResolve”方法应该是可继承的 |
Java Code Smell 陷阱 |
应使用“require_once”和“include_once”代替“require”和“include” |
PHP Bug |
不应使用“ResultSet.isLast()” |
Java Code Smell 性能,陷阱,sql |
“return”和“yield”不能用于同一个函数 |
Python Bug |
不应该调用“runFinalizersOnExit” |
Java Bug 证书 |
不应该调用“SafeHandle.DangerousGetHandle” |
C# 代码气味 泄漏,不可预测 |
“ScheduledThreadPoolExecutor”不应该有0个核心线程 |
Java Bug |
“密封”课程不应该有“受保护”的成员 |
C# 代码气味 扑朔迷离 |
“Serializable”类应具有版本ID |
Java Code Smell 证书,陷阱,序列化 |
“Serializable”类的“Serializable”内部类应该是静态的 |
Java Code Smell 证书,陷阱,序列化 |
“可序列化”的非可序列化类的内部类应该是“静态的” |
Java Bug 证书,序列化 |
“ServiceContract”和“OperationContract”属性应该一起使用 |
C# 代码气味 API设计 |
不应启用“session.use_trans_sid” |
PHP 漏洞 owasp-a5,php-ini |
“SingleConnectionFactory”实例应设置为“reconnectOnException” |
Java Bug 弹簧 |
不应该叫“睡觉” |
PHP 漏洞 |
“static readonly”常量应该是“const” |
C# 代码气味 性能 |
“static”字段应该内联初始化 |
C# 代码气味 |
应静态访问“静态”成员 |
Java Code Smell 陷阱 |
应谨慎使用“严格”模式 |
JavaScript 代码气味 跨浏览器,用户体验 |
应该使用“string.IsNullOrEmpty” |
C# 代码气味 笨拙 |
“string.ToCharArray()”不应该被冗余调用 |
C# Bug 笨拙 |
“StringBuilder”和“StringBuffer”不应该用字符实例化 |
Java Bug 陷阱 |
应在“Object.finalize()”实现的末尾调用“super.finalize()” |
Java Bug 证书,cwe |
“switch case”子句不应该有太多行 |
Flex Code Smell 大脑超负荷 |
“switch case”子句不应该有太多行 |
PHP 代码气味 大脑超负荷 |
“switch case”子句不应该有太多代码行 |
Java Code Smell 大脑超负荷 |
“switch”语句应以“default”子句结尾 |
JavaScript 代码气味 cert,cwe,misra |
“switch”语句应以“default”子句结尾 |
Java Code Smell cert,cwe,misra |
“switch”语句应以“default”子句结束 |
Flex Code Smell cert,cwe,misra |
“switch”语句应至少包含3个“case”子句 |
JavaScript 代码气味 糟糕的做法,misra |
“switch”语句应至少包含3个“case”子句 |
Flex Code Smell MISRA |
“switch”语句应至少包含3个“case”子句 |
C# 代码气味 糟糕的做法,misra |
“switch”语句应至少包含3个“case”子句 |
PHP 代码气味 糟糕的做法,misra |
“switch”语句应至少包含3个“case”子句 |
Java Code Smell 糟糕的做法,misra |
“switch”语句不应该嵌套 |
Flex Code Smell 陷阱 |
“switch”语句不应包含非案例标签 |
JavaScript 代码气味 misra,可疑 |
“switch”语句不应包含非案例标签 |
Java Code Smell misra,可疑 |
“switch”语句不应该有太多“case”条款 |
C# 代码气味 大脑超负荷 |
“switch”语句不应该有太多“case”条款 |
PHP 代码气味 大脑超负荷 |
“switch”语句不应该有太多“case”条款 |
Java Code Smell 大脑超负荷 |
“switch / Select”语句应以“default / Case Else”子句结尾 |
C# 代码气味 cert,cwe,misra |
“符号”不应用作构造函数 |
JavaScript Bug ES2015 |
不应在测试中使用“Thread.sleep” |
Java Code Smell 坏实践 |
在预期“Runnables”的地方不应使用“Threads” |
Java Code Smell 多线程,陷阱 |
不应初始化“ThreadStatic”字段 |
C# Bug 多线程 |
不应在非静态字段上使用“ThreadStatic” |
C# Bug 没用过 |
“抛出”声明不应该是多余的 |
Java Code Smell 笨拙,多余,未使用 |
“toArray”应该传递一个正确类型的数组 |
Java Bug |
“toString()”和“clone()”方法不应返回null |
Java Bug CWE |
“ToString()”调用不应该是多余的 |
C# 代码气味 笨拙,发现 |
“ToString()”方法不应返回null |
C# Bug CWE |
永远不应该在String对象上调用“toString()” |
Java Code Smell 笨拙,发现 |
不应指定“未定义” |
JavaScript 代码气味 可疑 |
应避免使用“URL.hashCode”和“URL.equals” |
Java Code Smell 性能 |
应使用“值”参数 |
C# 代码气味 陷阱 |
不应使用“void” |
JavaScript 代码气味 扑朔迷离 |
保持多个锁时不应调用“wait” |
Java Bug 死锁,多线程 |
“wait”,“notify”和“notifyAll”只应在对象明显保持锁定时调用 |
Java Bug 多线程 |
当持有锁时,应该使用“wait(...)”而不是“Thread.sleep(...)” |
Java Bug 证书,多线程,性能 |
不应使用“with”语句 |
JavaScript Bug |
不应使用“with”语句 |
Flex Bug |
“writeObject”不应该是类中唯一的“同步”代码 |
Java Code Smell 扑朔迷离 |
“yield”和“return”不应该在函数之外使用 |
Python Bug |
不应在发电机外使用“yield”表达式 |
JavaScript Bug ES2015 |
@FunctionalInterface注释应该用于标记单个抽象方法接口 |
不推荐的 Java 代码嗅觉 |
__exit__必须接受3个参数:type,value,traceback |
弃用的 Python 代码嗅觉 |
__future__ import不是第一个非docstring语句 |
Python 代码嗅觉 |
调用非直接基类的__init__方法 |
Python 代码嗅觉 |
不调用基类的__init__方法 |
Python 代码嗅觉 |
__init__方法是一个生成器 |
弃用的 Python 代码嗅觉 |
__iter__返回非迭代器 |
Python 代码嗅觉 |
“for”循环更新子句应该使计数器向正确的方向移动 |
JavaScript Bug 证书 |
“for”循环更新子句应该使计数器向正确的方向移动 |
Java Bug 证书 |
应该使用“while”循环而不是“for”循环 |
JavaScript 代码气味 笨拙 |
应该使用“while”循环而不是“for”循环 |
PHP 代码气味 笨拙 |
应该使用“while”循环而不是“for”循环 |
Java Code Smell 笨拙 |
一个紧密的花括号应该位于一行的开头 |
C# 代码气味 惯例 |
一个紧密的花括号应该位于一行的开头 |
PHP 代码气味 惯例 |
一个紧密的花括号应该位于一行的开头 |
Java Code Smell 惯例 |
字段不应复制其包含类的名称 |
Python 代码嗅觉 大脑超负荷 |
字段不应复制其包含类的名称 |
Java Code Smell 大脑超负荷 |
函数应该在函数末尾有一个退出点 |
Flex Code Smell 混乱,misra |
抽象类名称应符合命名约定 |
Java Code Smell 惯例 |
抽象类未引用 |
Python 代码嗅觉 |
抽象类使用次数太少 |
Python 代码嗅觉 |
不带字段的抽象类应转换为接口 |
Java Code Smell java8 |
抽象方法没有被覆盖 |
Python 代码嗅觉 |
抽象方法不应该是多余的 |
Java Code Smell 扑朔迷离 |
访问不存在的成员 |
Python 代码嗅觉 |
访问客户端类的受保护成员 |
Python 代码嗅觉 |
在定义之前访问成员 |
Python 代码嗅觉 |
访问不存在的成员(类型信息不完整) |
Python 代码嗅觉 |
不应使用别名函数 |
PHP 代码气味 过时的 |
条件结构中的所有分支不应具有完全相同的实现 |
JavaScript Bug |
条件结构中的所有分支不应具有完全相同的实现 |
Java Bug |
抽象类应该同时具有抽象和具体方法 |
C# 代码气味 惯例 |
抽象类应该同时具有抽象和具体方法 |
Java Code Smell 惯例 |
一个开放的大括号应该位于一行的开头 |
PHP 代码气味 惯例 |
一个开放的大括号应该位于一行的开头 |
Java Code Smell 惯例 |
一个开放的大括号应该位于一行的末尾 |
JavaScript 代码气味 惯例 |
一个开放的大括号应该位于一行的末尾 |
PHP 代码气味 惯例 |
一个开放的大括号应该位于一行的末尾 |
Java Code Smell 惯例 |
分析失败了 |
Python 代码嗅觉 |
注释参数应按声明它们的顺序出现 |
Java Code Smell 惯例 |
不应包装注释重复 |
Java Code Smell java8 |
异常反斜杠逃脱 |
弃用的 Python 代码嗅觉 |
字节字符串中的异常Unicode转义 |
Python 代码嗅觉 |
匿名代表不应该用于取消订阅活动 |
C# Bug |
只包含一个方法的匿名内部类应该成为lambdas |
Java Code Smell java8 |
扩展Event类的任何类都应该重写Event.clone() |
Flex Bug |
参数编号差异 |
Python 代码嗅觉 |
内置函数的参数应与文档类型匹配 |
JavaScript 代码气味 |
算术运算不应该导致“NaN” |
JavaScript 代码气味 |
算术运算符应该只有数字作为操作数 |
JavaScript 代码气味 扑朔迷离 |
不应使用数组构造函数 |
JavaScript 代码气味 可疑 |
不应使用数组协方差 |
C# 代码气味 陷阱 |
数组指示符“[]”应位于方法签名中的类型之后 |
Java Code Smell 惯例 |
数组指示符“[]”应该是类型,而不是变量 |
Java Code Smell 惯例 |
数组索引应为数字 |
JavaScript 代码气味 坏实践 |
工件ID应遵循命名约定 |
Java Code Smell 惯例,maven |
“&&”和“||” 应该使用 |
PHP Bug 可疑 |
“.equals()”不应用于测试“原子”类的值 |
Java Bug 多线程 |
“<>”不应用于测试不平等 |
Python 代码嗅觉 过时的 |
应使用“<?php”和“<?=”标签 |
PHP 代码气味 惯例,psr1 |
不应使用“= +”代替“+ =” |
JavaScript Bug |
不应使用“= +”代替“+ =” |
C# Bug |
当覆盖“等于”时,不应使用“==”和“!=” |
Java Code Smell 证书,cwe,可疑 |
当“等于”被覆盖时,不应使用“==” |
C# 代码气味 证书,cwe,可疑 |
应使用“===”和“!==”代替“==”和“!=” |
JavaScript 代码气味 可疑 |
应使用“===”和“!==”代替“==”和“!=” |
Flex Code Smell 可疑 |
不应使用“@Deprecated”代码 |
Java Code Smell 证书,cwe,已过时 |
“@NonNull”值不应设置为null |
Java Bug |
“@Override”应该用于覆盖和实现方法 |
Java Code Smell 坏实践 |
“@RequestMapping”方法应该是“公开的” |
Java 漏洞 弹簧 |
当“[DefaultParameterValue]”表示时,不应使用“[DefaultValue]” |
C# 代码气味 可疑 |
“[可选]”不应用于“ref”或“out”参数 |
C# 代码气味 陷阱 |
“[type = ...]”应该用于按类型选择元素 |
JavaScript 代码气味 jquery,表现 |
“\”只能用作原始字符串之外的转义字符 |
Python 代码嗅觉 |
“__construct”函数不应该对父构造函数进行PHP 4样式的调用 |
PHP 代码气味 惯例 |
“__exit__”应该接受type,value和traceback参数 |
Python Bug |
“__init__”不应返回值 |
Python Bug |
“抽象”类不应该有“公共”构造函数 |
C# 代码气味 扑朔迷离 |
“动作”映射不应该有太多“前进”条目 |
Java Code Smell 脑过载,支柱 |
不应使用“alert(...)” |
JavaScript 漏洞 cwe,用户体验 |
不应使用“Alert.show(...)” |
Flex 漏洞 cwe,用户体验 |
应禁用“allow_url_fopen”和“allow_url_include” |
PHP 漏洞 cwe,owasp-a1,php-ini,sans-top25-risky |
应该使用“任何()”来测试空虚 |
C# 代码气味 笨拙 |
不应直接访问“参数” |
JavaScript 代码气味 api-design,es2015 |
不应使用“arguments.caller”和“arguments.callee” |
JavaScript 代码气味 过时的 |
“Arrays.stream”应该用于原始数组 |
Java Code Smell 性能 |
不应该调用“Assembly.GetExecutingAssembly” |
C# 代码气味 性能 |
应该使用“Assembly.Load” |
C# 代码气味 不可预知的 |
“async”和“await”不应用作标识符 |
C# 代码气味 陷阱 |
“async”方法不应返回“void” |
C# Bug 多线程 |
如果“base”不是“object”,则“base.Equals”不应用于检查“Equals”中的引用相等性 |
C# Bug |
不应使用“BigDecimal(double)” |
Java Bug 证书 |
不应在循环外使用“break”和“continue” |
Python 代码嗅觉 |
“捕获”条款应该不仅仅是重新抛出 |
C# 代码气味 证书,笨拙,发现,未使用 |
“捕获”条款应该不仅仅是重新抛出 |
Java Code Smell 证书,笨拙,发现,未使用 |
应启用“cgi.force_redirect” |
PHP 漏洞 cwe,owasp-a5,php-ini |
“克隆”不应该被覆盖 |
Java Code Smell 可疑 |
“Cloneables”应该实现“克隆” |
Java Bug |
不应使用“Collections.EMPTY_LIST”,“EMPTY_MAP”和“EMPTY_SET” |
Java Code Smell 过时的,陷阱 |
不应检查“compareTo”结果的具体值 |
Java Bug 不可预知的 |
“compareTo”不应返回“Integer.MIN_VALUE” |
Java Bug |
应使用“ConfigureAwait(false)” |
C# 代码气味 多线程,可疑 |
不应使用“继续” |
JavaScript 代码气味 糟糕的做法,misra |
不应使用“CoSetProxyBlanket”和“CoInitializeSecurity” |
C# 代码气味 |
不应使用Apache Commons Lang库中的“DateUtils.truncate” |
Java Code Smell java8,性能 |
当使用对象或数组时,“defaults”应该是一个函数 |
JavaScript Bug 骨干 |
“delete”只能用于对象属性 |
JavaScript Bug |
不应在数组上使用“delete” |
JavaScript 代码气味 |
不应使用“deleteOnExit” |
Java Code Smell 性能 |
“Double.longBitsToDouble”不应该用于“int” |
Java Bug |
应使用“elseif”关键字代替“else if”关键字 |
PHP 代码气味 惯例,psr2 |
应禁用“enable_dl” |
PHP 漏洞 cwe,php-ini |
当需要键和值时,应该迭代“entrySet()” |
Java Code Smell 性能 |
“enum”字段不应该是公开可变的 |
Java 漏洞 坏实践 |
实现“IComparable”时,应该覆盖“等于”和比较运算符 |
C# Bug |
“equals”方法覆盖应接受“对象”参数 |
Java Bug 可疑 |
“equals”方法应该是对称的,适用于子类 |
Java Bug 证书 |
应该成对覆盖“equals(Object obj)”和“hashCode()” |
Java Bug 证书,cwe |
“equals(Object obj)”应该与“compareTo(T obj)”方法一起被覆盖 |
Java Bug |
“equals(Object obj)”应测试参数类型 |
Java Bug |
应该成对覆盖“Equals(Object)”和“GetHashCode()” |
C# Bug 证书,cwe |
不应绑定或分配“eval”和“arguments” |
JavaScript Bug 陷阱 |
当被调用的方法不需要时,不应该捕获“异常” |
Java Code Smell cwe,错误处理 |
不应使用“exit(...)”和“die(...)”语句 |
PHP Bug |
不应使用“foreach”循环的“显式”转换 |
C# 代码气味 可疑 |
“Externalizable”类应该没有参数构造函数 |
Java Bug |
不应使用“File.createTempFile”来创建目录 |
Java 漏洞 OWASP-A9 |
应禁用“file_uploads” |
PHP 漏洞 cwe,php-ini,sans-top25-insecure |
“最终”类不应该有“受保护”成员 |
Java Code Smell 扑朔迷离 |
“最终”不应冗余使用 |
PHP 代码气味 惯例 |
“finalize”不应将字段设置为“null” |
Java Code Smell 笨拙,表现 |
“find”应该用于选择id已知的元素的子元素 |
JavaScript 代码气味 jquery,性能,用户体验 |
应该处理“FIXME”标签 |
Python 代码嗅觉 |
“for”循环增量子句应该修改循环的计数器 |
JavaScript 代码气味 扑朔迷离 |
“for”循环增量子句应该修改循环的计数器 |
C# 代码气味 扑朔迷离 |
“for”循环增量子句应该修改循环的计数器 |
Java Code Smell 扑朔迷离 |
“for”循环停止条件应该是不变的 |
Flex Code Smell misra,陷阱 |
“for”循环停止条件应该是不变的 |
C# 代码气味 misra,陷阱 |
“for”循环停止条件应该是不变的 |
PHP 代码气味 misra,陷阱 |
“for”循环停止条件应该是不变的 |
Java Code Smell misra,陷阱 |
“for ... in”循环应该在对它们进行操作之前过滤属性 |
JavaScript Bug |
“未来保留字”不应用作标识符 |
JavaScript 代码气味 锁定,陷阱 |
不应该调用“GC.Collect” |
C# 代码气味 糟糕的做法,表现,不可预测 |
不应该调用“GC.SuppressFinalize” |
C# 代码气味 |
对于没有析构函数的类型,不应调用“GC.SuppressFinalize” |
C# 代码气味 混乱,未使用 |
“getClass”不应用于同步 |
Java Bug 证书,多线程 |
“GetHashCode”不应该引用可变字段 |
C# Bug |
不应该使用“全球” |
PHP 代码气味 惯例 |
不应使用“goto”语句 |
C# 代码气味 脑过载,misra |
不应使用“goto”语句 |
PHP 代码气味 脑过载,misra |
不应在数组实例上调用“hashCode”和“toString” |
Java Bug |
不应使用“HttpServletRequest.getRequestedSessionId()” |
Java 漏洞 cwe,owasp-a2,sans-top25-porous |
“IDisposable”应该正确实施 |
C# 代码气味 |
不应返回在“using”语句中创建的“IDisposable” |
C# Bug |
应该处理“IDisposables” |
C# Bug cwe,拒绝服务 |
应该简化“IEnumerable”LINQ |
C# 代码气味 笨拙 |
“如果......其他如果”构造应该以“else”条款结束 |
JavaScript 代码气味 证书,misra |
“如果......其他如果”构造应该以“else”条款结束 |
C# 代码气味 证书,misra |
“如果......其他如果”构造应该以“else”条款结束 |
PHP 代码气味 证书,misra |
“import”应该用于包含外部代码 |
JavaScript 代码气味 惯例,es2015,已过时 |
“in”不应与原始类型一起使用 |
JavaScript Bug |
“indexOf”检查不应该是正数 |
JavaScript 代码气味 可疑 |
“IndexOf”检查不应该是正数 |
C# 代码气味 可疑 |
“indexOf”检查不应该是正数 |
Java Code Smell 可疑 |
“indexOf”检查应使用起始位置 |
Java Code Smell 扑朔迷离 |
应删除始终返回“true”或“false”的“instanceof”运算符 |
Java Bug |
“interface”实例不应转换为具体类型 |
C# 代码气味 设计 |
不应忽略“InterruptedException” |
Java Bug cwe,多线程 |
“ISerializable”应该正确实施 |
C# 代码气味 |
“Iterator.hasNext()”不应该调用“Iterator.next()” |
Java Bug |
“Iterator.next()”方法应抛出“NoSuchElementException” |
Java Bug 不可预知的 |
不应该扩展“java.lang.Error” |
Java Code Smell 错误处理 |
“javax.crypto.NullCipher”不应用于测试之外的任何其他内容 |
Java 漏洞 cwe,owasp-a6,sans-top25-porous |
“锁定”对象不应“同步” |
Java Code Smell 证书,笨拙,多线程 |
“主要”不应该“抛出”任何东西 |
Java Code Smell 错误处理 |
不应使用“MovieClip.onEnterFrame”事件处理程序 |
Flex Code Smell 性能 |
“NaN”不应用于比较 |
JavaScript Bug 证书 |
“NaN”不应用于比较 |
C# Bug 证书 |
“new”运算符应该与函数一起使用 |
JavaScript Bug |
应该使用“notifyAll” |
Java Bug 证书,多线程 |
“null”不应与“Optional”一起使用 |
Java Bug java8 |
不应该捕获“NullPointerException” |
Java Code Smell 证书,cwe,错误处理 |
不应显式抛出“NullPointerException” |
Java Code Smell 陷阱 |
覆盖时,“Object.finalize()”应保持受保护(相对于公共) |
Java Code Smell 证书,cwe |
“Object.ReferenceEquals”不应用于值类型 |
C# Bug |
应在“while”循环内调用“Object.wait(...)”和“Condition.await(...)” |
Java Code Smell 证书,多线程 |
永远不应该在实现“java.util.concurrent.locks.Condition”的对象上调用“Object.wait(...)” |
Java Code Smell 可疑 |
“open_basedir”应限制文件访问权限 |
PHP 漏洞 cwe,php-ini |
不应在引用类型上重载“operator ==” |
C# 代码气味 陷阱 |
“可选”不应用于参数 |
Java Code Smell 笨拙 |
不应使用“out”和“ref”参数 |
C# 代码气味 可疑 |
“params”应该用于覆盖 |
C# 代码气味 扑朔迷离 |
不应在覆盖上引入“params” |
C# 代码气味 扑朔迷离 |
“部分”方法参数名称应匹配 |
C# 代码气味 证书,misra,可疑 |
“通行证”不应该被不必要地使用 |
Python 代码嗅觉 没用过 |
不应使用“php_sapi_name()” |
PHP Bug 性能 |
“前置条件”和记录参数不应该要求评估 |
Java Code Smell 性能 |
应使用有效索引调用“PreparedStatement”和“ResultSet”方法 |
Java Bug SQL |
仅由内部类调用的“私有”方法应该移动到这些类 |
Java Code Smell 扑朔迷离 |
不访问实例数据的“私有”方法应该是“静态的” |
Java Code Smell 陷阱 |
“public static”字段应该是不变的 |
Flex 漏洞 证书,cwe |
“public static”字段应该是不变的 |
Java 漏洞 证书,cwe |
应使用“read”和“readLine”返回值 |
Java Bug |
“readObject”不应该“同步” |
Java Code Smell 扑朔迷离 |
“readResolve”方法应该是可继承的 |
Java Code Smell 陷阱 |
应使用“require_once”和“include_once”代替“require”和“include” |
PHP Bug |
不应使用“ResultSet.isLast()” |
Java Code Smell 性能,陷阱,sql |
“return”和“yield”不能用于同一个函数 |
Python Bug |
不应该调用“runFinalizersOnExit” |
Java Bug 证书 |
不应该调用“SafeHandle.DangerousGetHandle” |
C# 代码气味 泄漏,不可预测 |
“ScheduledThreadPoolExecutor”不应该有0个核心线程 |
Java Bug |
“密封”课程不应该有“受保护”的成员 |
C# 代码气味 扑朔迷离 |
“Serializable”类应具有版本ID |
Java Code Smell 证书,陷阱,序列化 |
“Serializable”类的“Serializable”内部类应该是静态的 |
Java Code Smell 证书,陷阱,序列化 |
“可序列化”的非可序列化类的内部类应该是“静态的” |
Java Bug 证书,序列化 |
“ServiceContract”和“OperationContract”属性应该一起使用 |
C# 代码气味 API设计 |
不应启用“session.use_trans_sid” |
PHP 漏洞 owasp-a5,php-ini |
“SingleConnectionFactory”实例应设置为“reconnectOnException” |
Java Bug 弹簧 |
不应该叫“睡觉” |
PHP 漏洞 |
“static readonly”常量应该是“const” |
C# 代码气味 性能 |
“static”字段应该内联初始化 |
C# 代码气味 |
应静态访问“静态”成员 |
Java Code Smell 陷阱 |
应谨慎使用“严格”模式 |
JavaScript 代码气味 跨浏览器,用户体验 |
应该使用“string.IsNullOrEmpty” |
C# 代码气味 笨拙 |
“string.ToCharArray()”不应该被冗余调用 |
C# Bug 笨拙 |
“StringBuilder”和“StringBuffer”不应该用字符实例化 |
Java Bug 陷阱 |
应在“Object.finalize()”实现的末尾调用“super.finalize()” |
Java Bug 证书,cwe |
“switch case”子句不应该有太多行 |
Flex Code Smell 大脑超负荷 |
“switch case”子句不应该有太多行 |
PHP 代码气味 大脑超负荷 |
“switch case”子句不应该有太多代码行 |
Java Code Smell 大脑超负荷 |
“switch”语句应以“default”子句结尾 |
JavaScript 代码气味 cert,cwe,misra |
“switch”语句应以“default”子句结尾 |
Java Code Smell cert,cwe,misra |
“switch”语句应以“default”子句结束 |
Flex Code Smell cert,cwe,misra |
“switch”语句应至少包含3个“case”子句 |
JavaScript 代码气味 糟糕的做法,misra |
“switch”语句应至少包含3个“case”子句 |
Flex Code Smell MISRA |
“switch”语句应至少包含3个“case”子句 |
C# 代码气味 糟糕的做法,misra |
“switch”语句应至少包含3个“case”子句 |
PHP 代码气味 糟糕的做法,misra |
“switch”语句应至少包含3个“case”子句 |
Java Code Smell 糟糕的做法,misra |
“switch”语句不应该嵌套 |
Flex Code Smell 陷阱 |
“switch”语句不应包含非案例标签 |
JavaScript 代码气味 misra,可疑 |
“switch”语句不应包含非案例标签 |
Java Code Smell misra,可疑 |
“switch”语句不应该有太多“case”条款 |
C# 代码气味 大脑超负荷 |
“switch”语句不应该有太多“case”条款 |
PHP 代码气味 大脑超负荷 |
“switch”语句不应该有太多“case”条款 |
Java Code Smell 大脑超负荷 |
“switch / Select”语句应以“default / Case Else”子句结尾 |
C# 代码气味 cert,cwe,misra |
“符号”不应用作构造函数 |
JavaScript Bug ES2015 |
不应在测试中使用“Thread.sleep” |
Java Code Smell 坏实践 |
在预期“Runnables”的地方不应使用“Threads” |
Java Code Smell 多线程,陷阱 |
不应初始化“ThreadStatic”字段 |
C# Bug 多线程 |
不应在非静态字段上使用“ThreadStatic” |
C# Bug 没用过 |
“抛出”声明不应该是多余的 |
Java Code Smell 笨拙,多余,未使用 |
“toArray”应该传递一个正确类型的数组 |
Java Bug |
“toString()”和“clone()”方法不应返回null |
Java Bug CWE |
“ToString()”调用不应该是多余的 |
C# 代码气味 笨拙,发现 |
“ToString()”方法不应返回null |
C# Bug CWE |
永远不应该在String对象上调用“toString()” |
Java Code Smell 笨拙,发现 |
不应指定“未定义” |
JavaScript 代码气味 可疑 |
应避免使用“URL.hashCode”和“URL.equals” |
Java Code Smell 性能 |
应使用“值”参数 |
C# 代码气味 陷阱 |
不应使用“void” |
JavaScript 代码气味 扑朔迷离 |
保持多个锁时不应调用“wait” |
Java Bug 死锁,多线程 |
“wait”,“notify”和“notifyAll”只应在对象明显保持锁定时调用 |
Java Bug 多线程 |
当持有锁时,应该使用“wait(...)”而不是“Thread.sleep(...)” |
Java Bug 证书,多线程,性能 |
不应使用“with”语句 |
JavaScript Bug |
不应使用“with”语句 |
Flex Bug |
“writeObject”不应该是类中唯一的“同步”代码 |
Java Code Smell 扑朔迷离 |
“yield”和“return”不应该在函数之外使用 |
Python Bug |
不应在发电机外使用“yield”表达式 |
JavaScript Bug ES2015 |
@FunctionalInterface注释应该用于标记单个抽象方法接口 |
不推荐的 Java 代码嗅觉 |
__exit__必须接受3个参数:type,value,traceback |
弃用的 Python 代码嗅觉 |
__future__ import不是第一个非docstring语句 |
Python 代码嗅觉 |
调用非直接基类的__init__方法 |
Python 代码嗅觉 |
不调用基类的__init__方法 |
Python 代码嗅觉 |
__init__方法是一个生成器 |
弃用的 Python 代码嗅觉 |
__iter__返回非迭代器 |
Python 代码嗅觉 |
“for”循环更新子句应该使计数器向正确的方向移动 |
JavaScript Bug 证书 |
“for”循环更新子句应该使计数器向正确的方向移动 |
Java Bug 证书 |
应该使用“while”循环而不是“for”循环 |
JavaScript 代码气味 笨拙 |
应该使用“while”循环而不是“for”循环 |
PHP 代码气味 笨拙 |
应该使用“while”循环而不是“for”循环 |
Java Code Smell 笨拙 |
一个紧密的花括号应该位于一行的开头 |
C# 代码气味 惯例 |
一个紧密的花括号应该位于一行的开头 |
PHP 代码气味 惯例 |
一个紧密的花括号应该位于一行的开头 |
Java Code Smell 惯例 |
字段不应复制其包含类的名称 |
Python 代码嗅觉 大脑超负荷 |
字段不应复制其包含类的名称 |
Java Code Smell 大脑超负荷 |
函数应该在函数末尾有一个退出点 |
Flex Code Smell 混乱,misra |
抽象类名称应符合命名约定 |
Java Code Smell 惯例 |
抽象类未引用 |
Python 代码嗅觉 |
抽象类使用次数太少 |
Python 代码嗅觉 |
不带字段的抽象类应转换为接口 |
Java Code Smell java8 |
抽象方法没有被覆盖 |
Python 代码嗅觉 |
抽象方法不应该是多余的 |
Java Code Smell 扑朔迷离 |
访问不存在的成员 |
Python 代码嗅觉 |
访问客户端类的受保护成员 |
Python 代码嗅觉 |
在定义之前访问成员 |
Python 代码嗅觉 |
访问不存在的成员(类型信息不完整) |
Python 代码嗅觉 |
不应使用别名函数 |
PHP 代码气味 过时的 |
条件结构中的所有分支不应具有完全相同的实现 |
JavaScript Bug |
条件结构中的所有分支不应具有完全相同的实现 |
Java Bug |
抽象类应该同时具有抽象和具体方法 |
C# 代码气味 惯例 |
抽象类应该同时具有抽象和具体方法 |
Java Code Smell 惯例 |
一个开放的大括号应该位于一行的开头 |
PHP 代码气味 惯例 |
一个开放的大括号应该位于一行的开头 |
Java Code Smell 惯例 |
一个开放的大括号应该位于一行的末尾 |
JavaScript 代码气味 惯例 |
一个开放的大括号应该位于一行的末尾 |
PHP 代码气味 惯例 |
一个开放的大括号应该位于一行的末尾 |
Java Code Smell 惯例 |
分析失败了 |
Python 代码嗅觉 |
注释参数应按声明它们的顺序出现 |
Java Code Smell 惯例 |
不应包装注释重复 |
Java Code Smell java8 |
异常反斜杠逃脱 |
弃用的 Python 代码嗅觉 |
字节字符串中的异常Unicode转义 |
Python 代码嗅觉 |
匿名代表不应该用于取消订阅活动 |
C# Bug |
只包含一个方法的匿名内部类应该成为lambdas |
Java Code Smell java8 |
扩展Event类的任何类都应该重写Event.clone() |
Flex Bug |
参数编号差异 |
Python 代码嗅觉 |
内置函数的参数应与文档类型匹配 |
JavaScript 代码气味 |
算术运算不应该导致“NaN” |
JavaScript 代码气味 |
算术运算符应该只有数字作为操作数 |
JavaScript 代码气味 扑朔迷离 |
不应使用数组构造函数 |
JavaScript 代码气味 可疑 |
不应使用数组协方差 |
C# 代码气味 陷阱 |
数组指示符“[]”应位于方法签名中的类型之后 |
Java Code Smell 惯例 |
数组指示符“[]”应该是类型,而不是变量 |
Java Code Smell 惯例 |
数组索引应为数字 |
JavaScript 代码气味 坏实践 |
工件ID应遵循命名约定 |
Java Code Smell 惯例,maven |
程序集应具有版本信息 |
程序集应具有版本信息 |
测试工具-----Sonarqube相关推荐
- 安全测试工具_选型必看:DevOps中的安全测试工具推荐
作者 | Sudip Sengupta 策划 | 田晓旭 在今天的文章中,我们将共同探讨 DevOps 领域中应用最为广泛的安全工具与方法. 从策略层面来讲,安全测试工具可以融入 DevOps 工作流 ...
- 2020测试工具索引
初次发布文章时,共收集435个工具! 这些测试工具均为博主人肉爬虫出来的,数据来源于: 百度.Google 各大博客.门户网站.论坛 个人测试经验 在整理过程中,我会尽量去官网找到官方对该工具的描述, ...
- 十大开源Web应用安全测试工具
点击蓝字关注我们 Web应用安全测试可对Web应用程序执行功能测试,找到尽可能多的安全问题,大大降低黑客入侵几率. 在研究并推荐一些最佳的开源Web应用安全测试工具之前,让我们首先了解一下安全测试的定 ...
- 推荐8个良心安全测试工具,快来取走
安全测试是很重要的东西!!可以提高信息系统中的数据安全性,未经批准的用户就无法访问.成功的安全测试可以保护Web应用程序免受严重的恶意软件和其他恶意威胁的侵害,这些侵害会导致Web应用程序崩溃或产生意 ...
- 良心推荐8个安全测试工具,快来取走
安全测试是很重要的东西!!可以提高信息系统中的数据安全性,未经批准的用户就无法访问.成功的安全测试可以保护Web应用程序免受严重的恶意软件和其他恶意威胁的侵害,这些侵害会导致Web应用程序崩溃或产生意 ...
- Android 代码检查工具SonarQube
代码检查工具能帮我们检查一些隐藏的bug,代码检查工具中sonar是比较好的一个.官网 Sonar 概述 Sonar 是一个用于代码质量管理的开放平台.通过插件机制,Sonar 可以集成不同的测试工具 ...
- 网站压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 引用 wget htt ...
- 属性匹配工具_测试工具链——高效构建Mock服务
现在,WEB系统的开发一般都采用前后端分离的架构,以及部分公司采用"前台-中台-后台"的组织架构,难免会出现开发进度不一致的情况,导致系统联调或测试需要等到所有依赖开发完成后才能够 ...
- 微软压力测试工具 web application stress
WEB服务器的压力测试工具~ 115808 2009年8月1日 lbimba 铜牌会员 这里给广大的煤油推荐一个web网站压力测试工具.它可以用来模拟多个用户操作网站,在程序投入运行时,可以用它来进行 ...
最新文章
- Eclipse使用Maven建立SSM多模块的项目
- 微信小程序免费SSL证书https、TLS版本问题的解决方案
- Java 洛谷 P1089 津津的储蓄计划讲解
- BSS段,数据段,代码段,堆内存和栈
- 10g手动创建数据库
- Java课程设计——日历的设计与实现
- 周立功CAN通讯(txt格式) 报文解析
- html5常用的小控件,收藏了
- Android 新浪微博开发者平台应用申请及配置说明
- spring中AOP(面向切面编程)
- 月是故乡明,每逢佳节倍思亲,近乡情更怯
- 软件可靠性工程研讨会报告
- 使用 Python 进行面部特征检测和面部过滤器
- Java、JSP宠物狗销售系统
- 计算机准考证要打印多大的纸,税务证准考证打印纸张大小要求多大的?
- 假如我国国民生产总值的年增长率为7%,计算10年后我国国民生产总值与现在相比增长多少百分比。计算公式为 r为年增长率,n为年数,p为与现在相比的倍数。
- 新一轮工业革命的灵魂是信息革命 张亚勤
- 虚拟机下的Linux连接校园网上网问题
- git log 怎么退出
- python爬取问卷星内容_Python 自动填写问卷星(适用问卷星的所有类型题目)
热门文章
- 计算机公共教学平台 用户登录,天空教室计算机共课学习管理平台教师操作手册.doc...
- 如何做好疫情防控班会PPT课件?
- 艾滋女大学生网络日记[摘录]
- java jpanel刷新_JPanel重绘问题
- 2021-09-17 ROS2教程(三)-服务客户端创建(C++/Python)记录
- unet知乎_UNet++
- Unity 把向量归一化的normalized和Normalized的联系和区别【权威】
- 声明类person,该类定义了两个数据成员,一个带参的构造方法,一个具有两个参数的构造方法,一个方法prin()
- 无盘操作系统服务器,无盘服务器操作系统
- 单口RAM,双口RAM,FIFO的区别