VS2012通过VSSonarExtension2012连接Sonarqube服务器报错问题
咱们来拆解一下这个问题的核心原因,主要是几个关键差异导致的:
身份验证协议支持跟不上
SonarQube的新版本通常会淘汰老旧的、不安全的身份验证协议,比如未加密的基本认证或者旧版token格式。VSSonarExtension2012是针对VS2012的老插件,开发时适配的是早年SonarQube的认证规则,现在你的SonarQube服务器可能已经升级到了新的安全标准,老插件没法兼容新的验证机制(比如TLS 1.2+加密的认证、现代token模式),自然就报凭据错误了。而SonarLint for VS2015一直在更新,能跟上SonarQube的认证要求。插件维护状态天差地别
VSSonarExtension2012早就停止维护了,不会再推出更新来适配SonarQube的新特性和安全策略。而SonarLint是Sonar官方持续维护的工具,会不断迭代修复兼容性问题,所以当SonarQube服务器调整了安全规则,SonarLint能快速适配,老插件却只能停留在过去的状态。VS版本底层API的限制
VS2012和VS2015依赖的.NET框架、IDE网络请求API完全不同。VSSonarExtension2012基于VS2012的旧API开发,可能在处理HTTPS请求、凭据加密传输时存在缺陷——比如不支持现代TLS版本,而你的SonarQube服务器已经禁用了旧的TLS协议。SonarLint针对VS2015的版本用了更新的网络库,能正确处理这些安全传输要求,所以连接没问题。凭据处理逻辑不一样
有些情况下,SonarQube现在只接受token认证(把token填在用户名字段,密码留空),但VSSonarExtension2012可能还在要求必须输入完整的用户名和密码,或者没法正确识别token的格式。而SonarLint已经适配了这种token认证模式,所以用相同的凭据(其实是token)就能成功连接。
内容的提问来源于stack exchange,提问作者Raq

