java - SonarQube:不应使用幻数(鱿鱼:S109)
问题描述
根据定义,
“幻数”是一个应该被赋予符号名称的值,但它却作为文字滑入代码中,通常在多个地方。
这是一个神奇数字的完美例子
for(int i = 0; i < 4; i++){ // Noncompliant, 4 is a magic number
...
并且应该更改为有意义的东西,例如
for(int i = 0; i < NUMBER_OF_CYCLES ; i++){
...
但是 Sonar 也会为 indexNumbers 抛出错误。例如,我有一个 DAO 类,其中插入语句有近 50 多列,声纳会抛出错误
ps.setString(1 ,...)
我相信这比
ps.setString(INDEX_ONE ,...)
我的理解有什么问题吗?还是声纳中的错误?
解决方案
从技术上和事实上,这不是一个错误:规则发现代码使用了任意数字。
但是,我认为有理由认为这个非常特殊的用例,具有固定的列号索引,应该被视为误报。事实上,我认为尝试“修复”代码毫无意义。所以我的建议是将这些单独的问题标记为SonarQubeFalse positive
或Won't fix
在 SonarQube 中,或者从分析您的 DAO 类中排除此规则。
推荐阅读
- python - 从列表中创建随机列表而不重复项目
- javascript - 路由同时提供参数和请求正文 nodejs
- typescript - 如何在 TypeScript 中定义动态 `this` 值的类型?
- python - 我的scrapy spider只给我看网站的前两页
- javascript - 如何在 echarts 中自动缩放字体大小?
- c# - 如何在C#中使用Linq替换DataTable所有行的双引号?
- server - 由于erlang超时,如何触发handle_info?
- python - 如何在忽略标点符号的数据框中删除重复项?
- apprtc - AppRTC中的房间响应完全错误以及断开呼叫后如何清除id或url?
- php - csrf 令牌会在 laravel 中的每个请求上自动重新生成,这会导致生产服务器上的 csrf 令牌不匹配