【问题标题】:Sonar issue - Remove this useless assignment to local variable声纳问题 - 删除这个对局部变量的无用分配
【发布时间】:2018-10-18 01:11:11
【问题描述】:

我正在使用下面提到的一段代码:

IList<Comment> listComments = new List<Comment>();
foreach (var comment in paxComments.Where(x => x.Id== paxID))
{
    listComments.Add(new Comment()
    {
        CommentID = comment.CommentId,
        Text = comment.Comment,
    });
}

这里的声纳说“删除这个无用的局部变量赋值”。如何在不使用新关键字初始化的情况下添加到列表中?

声纳评论是“删除这个对局部变量“listComments”的无用赋值。”

我浏览了以下链接,但没有得到答案。

Sonar complaining about useless assignment of local variable

remove this useless assignment to local variable c#

【问题讨论】:

  • 声纳注释是“删除这个对局部变量“listComments”的无用赋值。”
  • SonarQube 上安装了哪个版本的 Sonar C#?此外,如果您可以在此处发布完整的方法主体,这将有助于识别问题。
  • 我没有进入 Sonar,但消息是“删除这个无用的赋值 to 局部变量 listComments”。也许它并没有假装说不需要该变量,而是说 foreach 可以以更好的方式完成。
  • @Valeri: 下面是完整的方法: private IList GetPaxComments(IEnumerable paxCmments, int paxID) { IList listComments = new List(); foreach (var comment in paxComments.Where(x => x.Id== paxID)) { listComments.Add(new Comment() { CommentID = comment.CommentId, Text = comment.Comment, }); } 返回列表评论 }
  • @AshwiniKumar 感谢您提供的方法文本。您使用的是哪个版本的 Sonar C#?我无法用最新版本和您的代码重现问题。

标签: c# sonarqube sonarqube-scan


【解决方案1】:

这个呢:

IList<Comment> listComments = paxComments.Where(x => x.Id== paxID).ToList();

如果它们属于同一类型。否则将必填字段投射到 where:

IList<Comment> listComments = paxComments.Where(x => x.Id== paxID).Select(x=> new Comment({CommentId = x.commentId, Text = x.Text})).ToList();

我猜 ForEach 循环是不必要的。

【讨论】:

  • 我将不得不提交代码以查看声纳问题是否消失。但是为什么 listComments 变量在提到的代码段中没有用呢?
  • 免责声明:我不使用任何代码审查工具。 :D ---- 你的逻辑不正确并没有真正的原因。只需更少的代码行就可以实现相同的效果……(假设我的方法可以解决您的情况)。请记住,这些只是要遵循的“假定的良好规则”——并没有任何真正的区别。顺便说一句,我看到一些团队遵循的做法是在源代码行中不超过 70 个字符,给出的理由是在调试期间您不必水平滚动。
  • @AshwiniKumar 你可以安装SonarLint for Visual Studio,这样你会在提交之前看到与SonarQube相同的问题......
  • @Valeri SonarLint 已安装。但它没有显示任何错误。但是当我提交代码时,SonarQube 给出了错误。
  • Select 隐式循环 IEnumerable 所以我想知道在抱怨什么。更简单的代码?更快的代码?
猜你喜欢
  • 2017-01-13
  • 2018-06-02
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多