重构这个方法,将其认知复杂度从21降低到允许的15。如何重构并降低复杂性
如何降低给定代码的复杂性?我在Sonarqube中遇到了这个错误--->重构这种方法将其认知复杂性从21降低到15的方法. this.deviceDetails = this.data && {...this.data.deviceInfo} || {}; if (this.data && this.data.deviceInfo) { this.getSessionInfo(); // tslint:disable-next-line: no-shadowed-variable const { device, driver, ipAddress, port, active, connectionType } = this.data.deviceInfo; this.deviceDetails = { name: device.name || '', manufacturer: device.m
2 2024-02-20
编程技术问答社区
SonarQube/SonarLint/Visual Studio。在解决方案中对所有项目使用一个规则集
我们目前正在评估用于.NET应用程序的Sonarqube/Sonarlint的使用.到目前为止,我们对我们所看到的东西感到非常满意(顺便说一句,这是为了将Sonarqube带到这么远的荣誉 - 几年前我将其用于我的博士学位项目,从那时起,它已经有了很大的进步!). 但是,有点令人惊讶:当我将Sonarlint实例连接到我们的Sonarqube服务器(工作正常)并开始同步绑定项目时,Sonarlint开始下载Nuget软件包(预期),然后为解决方案的每个项目创建一个甚至两个.ruleset文件(除了文件SonarQube/CSharp.ruleset之外,我认为这是解决方案范围的规则集). 我期望和希望的只是对完整解决方案有效的单一规则集(并且可能是覆盖该规则集的选项(例如,这是有意义的(例如,测试项目))). 这种行为根本不可能,即我错过了什么吗?文档是我到目前为止缺乏声音的唯一领域. 解决方案 创建了这些附加规则集文件的原因.好吧,实
12 2023-11-24
编程技术问答社区
如何禁用测试项目的SonarLint
我在VS 2015中安装了声音,看起来像是一个很大的扩展. 目前,扩展程序还正在分析我的测试项目并对此发出警告.如何禁用对特定(测试)项目的检查? 更新 它不是关于在Sonarqube禁用特定的声纳规则或项目,而是关于视觉工作室扩展的声音. 解决方案 在Visual Studio中,打开项目,然后挖掘参考部分.选择编辑活动规则集: 在打开特定项目所需的规则/取消选择规则的屏幕上.然后点击保存.这很可能会在您的项目中创建一个新的.ruleset文件,并指示罗斯林而不是标准集. 结果是项目文件已使用标签进行更新: UnitTests.Core.ruleset 您还可以使用添加新文件向导并选择"代码分析规则集"选项: 然后从分析菜单中选择"解决方案的配置代码分析",您可以从那里选择新添加的规则集并分配给您想要的项目:
12 2023-11-24
编程技术问答社区
内置字符串格式化与字符串连接作为日志参数
我正在使用LOGGER.debug("Comparing objects: " + object1 + " and " + object2); side Note:包含此行的方法可能经常被调用. 此问题的描述是 "先决条件"和记录论点不应评估 (鱿鱼:S2629) 传递消息参数,需要进一步评估到guava com.google.common.base.base.trecondition Check可能会导致性能 惩罚.那是因为无论是否需要,每个论点 必须在实际调用该方法之前解决. 同样,将串联的字符串传递到记录方法也可以 引起了不必要的命中,因为串联将是 每次调用该方法时都执行,无论是日志 级别足够低以显示消息. 相反,您应该构造代码以通过静态或预先计算 在先决条件条件中的值检查和记录呼叫. 具体来说,应使用内置的字符串格式而不是 字符串串联,如果消息是方法的结果 呼叫,然后应跳过altoghether,然后 相关例外应有条件地抛出. 不合
10 2023-10-01
编程技术问答社区
每天从命令行获取PHP lint / PhpStorm检查错误
试图从命令行中运行一种php的形式,每天. 我尝试了声音 - phpstorm的可爱,但可悲的是,他们显然已经停止了支持命令行命令. 我试图获得phplint和php -l,但我不是php guru,并且在作曲家文件中挣扎. 最后,我查看了phpstorm Inspect-似乎可以创建一个99种错误的目录,但后来我必须编写一个工具来抓取文件和查看/计数错误,并警告查看他们是每天上/向上的,还是在IDE中进行检查,这两个都不具有吸引力. 必须有一个工具可以产生一个不错的简单输出,我可以将其作为构建管道的一部分合并,每天或每次构建后绘制错误/警告? 解决方案 尝试 phpstan (php静态分析工具),该工具支持 cli 执行.这也使用composer安装(几乎是默认值);大多数PHP IDE支持composer开箱即用.除非手动将其放入包括路径(这只是不会给您自动加载器功能). 可能不会安装的许多包装. 其他解决方案 您实际上可以从命令行运行phpS
4 2023-09-29
编程技术问答社区
无法在平台上安装sonarlint插件。Eclipse Mars.1 (4.5.1)
尝试在STS工具中安装Sonar Lint插件,它没有安装,并说Sonar Lint与此版本的Eclipse不兼容. 找到版本的详细信息. Spring Tool Suite Version: 3.7.2.RELEASE Build Id: 201511261048 Platform: Eclipse Mars.1 (4.5.1) 解决方案 嗨,您可以从follwing url 确保下载位置,不要解开存档文件(用于Windows) 转到安装新软件 eclipse help >> 单击 在右侧使用文本字段的右键,将显示以下屏幕 填写名称位置为"声纳"等 现在通过单击存档按钮选择下载的存档文件 按照安装窗口的安装说明 其他解决方案 您也可以安装SonarLint的zip文件,如下: 1.访问网站 https://bintray.com/Sonarsource/sonarlint-for-eclipse/releases/2.6.0 .
24 2023-09-15
编程技术问答社区
要么记录这个异常并处理它,要么用一些上下文信息重新抛出它
可以帮助我为什么Sonarlint显示这一点: 登录此异常并处理它,或者用某些上下文信息将其重新进行. 对于以下代码. public static T getObjectFromJson(final Object jsonString, final Class valueType) { T object = null; if (jsonString != null) { try { object = MAPPER.readValue(jsonString.toString(), valueType); } catch (IOException io) { log.error(ERROR_LOG_STR + " in method getObjectFromJson(). Exception Message={},
4 2023-09-12
编程技术问答社区
Sonar Lint与服务器规则不同步
Sonar Lint 2.0,它连接到我自己的Sonar Qube服务器,没有插件报告的问题. 问题是它与我的服务器规则不同步.发现了Java文档中提到的那些人,但似乎并不全部.我想知道这些Java规则列表是否仅在不仅连接到任何服务器时才使用. 使用远程服务器时使用或同步哪些规则有限制? 如果可能的话,我们确切可以做些什么才能使其同步. Plateform: Java SonarQube Server: Version 5.6+ Sonar Lint: Version 2.0 解决方案 问题是: Sonarqube服务器支持PMD,Findbug和CheckStyle等外部插件. Sonarlint Management已确定不是支持任何外部插件,因此您只能支持Sonar Bug规则. 解决方案: 我们可以做的是,我们可以通过安装的外部插件(PMD,Findbug,CheckStyle)从Sonaqube服务器和 link 可以提示您问题哪种声
24 2023-09-07
编程技术问答社区
Sonarqube维修的Junit测试
我正在为使用Inria的勺子编写一种自动修复系统,以使用一些特定的Sonarqube错误.我想为我的维修系统编写JUNIT测试,以检查该错误是否已修复.我想做这样的事情: X = file; Y = repair(X); assert(! hasSonarqubeBug(Y)); Sonarqube分析仅适用于完整的项目而不是单个文件. Sonarlint确实分析了单个文件,但我不知道是否有一种使用Sonarlint进行这样的测试的方法. 解决方案 使用Web API,您可以检索Sonarqube中任何类型的组件(包括文件)的问题. 来自Web API文档(http(s)://sonarhost:9000//web_api/api/essess) 对于 获取API/问题/搜索参数ComponentKeys: 组件密钥的逗号分隔列表.检索与 组件(及其所有后代)的特定列表.组件 可以是投资组合,项目,模块,目录或文件. - 评论后编辑 - 为了在更改源代码
6 2023-09-07
编程技术问答社区
命令行Sonarlint仅显示新问题
有没有办法配置命令行声纳细节以仅显示新问题? 我听说在使用不同的插件时可能会集成命令行. 谢谢. 解决方案 否这是不可能的,但确实会有意义.
32 2023-09-07
编程技术问答社区
Sonarlint KeynotFoundException
使用声纳分析C-Sharp代码库时,我会看到一个奇怪的错误. 14:59:19.350信息 - 视觉工作室的声音1.3.0.0 14:59:20.154错误 - 14:59:20.337错误 - 未经治疗的例外:system.collections.generic.keynotfoundexception:给定键不是 存在于字典中. 14:59:20.338错误 - 在system.collections.immutable.immutabledictionary`2.get_item(tkey键) 14:59:20.340错误 - sonarlint.runner.configuration.addanalyzercommentregularexpression(建造者) 建筑商) 14:59:20.341错误 - sonarlint.runner.configuration.analyzers() 14:59:20.341错误 - on sonarlint.runner.pro
10 2023-09-07
编程技术问答社区
ASP .NET和SonarLint
我们有一个ASP .NET项目,我们正在尝试对JS进行直接分析. Sonarlint仅提供对C#文件的分析.增量分析似乎已被弃用,问题分析需要不同的配置文件,Sonarqube扫描仪不支持这些文件.可以想象,拥有2个不同的配置文件并不断重命名它们是一项非常困难的任务,教育,教育和纪律是一大批开发人员. 解决方案 您(目前)无法在Sonarlint中为Visual Studio中的JS提供支持,但是您可以使用Intellij/Eclipse,尽管我不确定这种体验是否对A ASP.NET项目. 我建议的是,如果您确实想在提交提交之前进行分析,就是要拥有本地Sonarqube服务器(可以找到在这里)并手动运行 CLI 的扫描仪,并将结果推入此本地实例.
2 2023-09-07
编程技术问答社区
不能从sonarqube服务器更新数据
Sonarlint Eclipse要求我刷新我的Sonarqube数据(更新所有项目绑定)时,我会收到以下错误: Unable to update data from server 'cerbere' Unable to move C:\workspace neon\.sonarlint\work\cerbere\.sonartmp_1776998337301134698\4346381085123285128 to C:\workspace neon\.sonarlint\storage\cerbere\global 我也升级到最新版本的Sonarlint(2.1.0),我不知道这是否引起了我的问题,我以前从未遇到过. 我必须手动移动数据以修复它. 谢谢. 解决方案 正如@simon告诉我的那样,这是路径问题中的一个空间.
4 2023-09-06
编程技术问答社区
有没有办法让SonarQube只对不完整的Switch语句发出警告?
使用Java,Sonarqube抱怨没有一个default: case的枚举值的开关语句. 给出的推理是: "最终默认条款的要求是防御性编程. 该条款应采取适当的行动,或包含一个 关于为什么不采取行动的适当评论.当开关覆盖时 枚举的所有当前价值 - 尤其是当没有的情况下 - 默认情况仍应使用,因为不能保证 枚举不会扩展." 我不同意上述语句 - 我希望以下行为产生警告: 修改枚举,以使开关不再覆盖每种情况. 需要默认情况 - 如果枚举更改,我们将不会警告,并且开关将不再处理所有情况. 解决方案 Sonarqube允许您假设在不完整的开关案例覆盖范围上没有现有的枚举相关的规则警告,则可以在SQ上添加自己的规则,并在连接到您的SQ服务器的所有声音实例上执行它.
0 2023-09-06
编程技术问答社区
IntelliJ上的SonarLint v2.0的连接模式不工作?
Sonarlint v2.0 Intellij现已发布,并且具有此"连接到Sonar Server"功能,但即使如此,它似乎与我的服务器规则不同步. http://www.sonarlint.org/intellij/intellij/#connected > 它对某人有用吗? 我错过了一步? 还是一个错误? 谢谢! Intellij Idea版本:2016.1 Sonarlint版本:2.0.1 Sonarqube版本:5.4 解决方案 Sonarlint,到目前为止,无法与PMD或Findbug这样的第三方分析仪使用,如果您使用的是这些分析仪,它们将简单地忽略. 您可以在Sonarqube服务器中更新您的规则以仅使用Sonarqube存储库中定义的规则,其中大多数具有等效版本. 其他解决方案 请检查声林链接控制台以获取详细信息并在Sonarlint Google组上打开线程,以便我们可以调查.
6 2023-09-06
编程技术问答社区
怎样才能使SonarLint在有很多项目的Eclipse中启动得更快?
在我们的情况下,我们有一个父级项目(TRUNK),所有插件在该插件中,我们希望所有子项目都具有相同的规则.为了使维护更容易,我们认为我们可以将Eclipse中的所有插件项目绑定到中继线(因此我们可以批量更新它们等). 这里的问题是,由于某种原因,它总是为每个项目加载所有子项目. 1)它们总是相同的2)在呼叫的呼叫中没有更多的信息. 如果我们将每个项目绑定到Sonarlint中的真实正确项目,这是很多努力. (我们有数百个插件.) 尽管如此,对于我们在Eclipse Sonarlint中拥有的100多个插件项目而言,要从服务器中获取所有信息. 我们如何使声音更快?有建议的方法吗?我们可以帮助改善这种情况的逻辑吗? 解决方案 我认为您的问题的标题令人困惑.这不是关于Sonarlint启动的,而是关于Sonarlint的"更新所有绑定"功能. 我创建了一张票,我们将尝试在下一个版本中修复: https://jira.sonarsource.com/browse.com
10 2023-09-06
编程技术问答社区
使用pom.xml禁用声纳规则?
我正在使用Spring Boot and Spring Jpa示例,并希望通过maven通过maven使用pom.xml>文件来禁用.我没有访问权限或无法在SonarQube中禁用该规则,因为它已为组织级配置. 方法不应有太多参数(squid:s00107) 我已经多次浏览了网络,还没有找到任何有希望的解决方案.这就是我所看的:配置Sonar以将文件排除在Maven pom.xml 也是如此. 解决方案 似乎有一种方法,但可能不支持. e1 squid:S00107
8 2023-09-06
编程技术问答社区
如何在Eclipse中向SonarLint添加证书
连接我的Sonarqube服务器需要证书.我已经安装了Sonarlint插件,但是它没有任何选择来添加证书来连接我的Sonarqube服务器.它只有URL,用户名,密码选项.有什么方法可以设置证书? 解决方案 Sonarlint不允许使用证书的配置,但是您可以将证书添加到JRE或JDK. 从Oracle文档复制文本: 将证书导入可信证书 在您可以授予签名的代码许可以读取指定文件之前,您需要在密钥库中导入Susan的证书作为受信任的证书. 假设您已从Susan收到 包含Count.class文件的签名的JAR文件sCount.jar, 文件Example.cer,其中包含与用于签署JAR文件的私钥的公共密钥的公共密钥证书. 即使您创建了这些文件,并且实际上还没有在任何地方运输它们,也可以模拟除了Creater和Sender Susan以外的其他人.假装你现在是雷.用作射线,您将创建一个名为exampleraystore的密钥库,并将其用来将证书
22 2023-09-06
编程技术问答社区
方法有8个参数,大于7个授权。
当我使用Sonar Lint扫描代码时,以下代码显示错误为"方法有8个参数,大于7个授权" @PutMapping("/something") public List updateSomeThing(@PathVariable final SomeCode code, @PathVariable final SomeId id, @PathVariable final String testId, @PathVariable final String itemId, @RequestBody final List
2 2023-09-06
编程技术问答社区