本地安装Sonar步骤记录(二:记录坑儿)

本文详细介绍了在Win10环境下配置Sonar-scanner环境变量的正确步骤,包括解决命令行窗口生效问题的方法,以及如何通过命令行解决代码配置文件在扫描时的错误。此外,还提供了使用Sonar进行项目分析的具体流程,包括生成Token、选择项目类型和执行Scanner的步骤。同时,文章分享了Mysql安装中常见的问题及解决方案,如版本选择和数据库名设定等。

一、Mysql安装不成功的问题

      Mysql的数据库名取的要记得。其他的坑儿挺多,暂时忘记了。Todo  版本要3.5.6即可。高了问题多

      sonar也不用装高版本,高版本需要java11以上。

    这里要选择Custom 而不是用默认的Developer Default,第一个默认的会安装很多

     

二、sonar-scanner环境变量配置的问题

       win10配置了环境变量后,执行命令行的窗口要关闭了再重新打开,这样 sonar-scanner -v 才能生效。

      属于bug,还可以用PowerShell 来取代命令行窗口来解决。

三、代码中的配置文件,在扫描时总报错的问题

通过使用命令行来解决。

步骤:

  • 首先输入你的项目名称,生成一个 Token。
  • 点击生成之后,点击 Continue ,这时候会提示你选择项目类型,并输入一个项目的唯一 Key,这里我还是输入的 TestProject。
  • 点击 Done 之后右边会生成相关的 Scanner 执行步骤,你可以 Copy 下来。

img

      如果你需要分析项目的话,如果你是拥有 DotNet Core 2.1 环境的话可以使用 Global Tool 来直接安装分析器。

 安装 dotnet scanner

参照 Sonar 官方的文档 ,运行命令行工具,并且键入以下命令:

dotnet tool install --global dotnet-sonarscanner --version 4.3.1

就成功安装好 Sonar Scanner 了。

在命令行工具当中分步执行以下命令:      

dotnet sonarscanner begin /k:"test" /d:sonar.host.url="http://localhost:9000" /d:sonar.login="3eaea0300b12b247b98105ec33d2c005f555****"

 dotnet build

dotnet sonarscanner end /d:sonar.login="3eaea0300b12b247b98105ec33d2c005f555****"

这里的 /k 指定你的项目,/d 这些参数分别是你 Sonar 的地址与你刚才生成的 Token。

然后就可以查看到结果了。

本地执行公司的工程时总报错。

就先把js屏蔽了,再重新拉取了一遍代码,再解决了如下数据库的问题,然后成功。

四、用命令执行scanner过程中,总报错的问题

       https://blog.youkuaiyun.com/intelrain/article/details/95043570

<think>我们正在解决三个核心问题: 1. 如何将SonarLint的规则提示语言设置为中文? 2. 为什么本地SonarLint扫描结果不显示在SonarQube 7.8服务器上? 3. 如何统一团队规则并分别扫描SpringBoot和Vue3+TypeScript项目? 参考用户之前的问题,我们已经知道: - 用户已经将SonarQube 7.8汉化,所以服务器界面是中文。 - 用户已经将SonarLint连接到SonarQube,但本地扫描的问题没有出现在服务器上。 现在,我们逐一解决: 一、将SonarLint的规则提示语言设置为中文 由于SonarLint运行在IntelliJ IDEA中,其界面语言跟随IDE。而规则描述的语言则取决于从SonarQube服务器同步过来的规则描述的语言。因为用户已经将SonarQube汉化,所以规则描述应该是中文。但是,如果SonarLint本地缓存的规则描述还是英文,则需要更新绑定。 操作步骤: 1. 在IntelliJ IDEA中,打开设置:File -> Settings -> Tools -> SonarLint -> Rules 2. 在右侧,选择“Use SonarQube Server settings”,并确保连接的是已汉化的SonarQube服务器。 3. 选择对应的质量配置集(Quality Profile),然后点击“Update Binding”按钮,更新项目绑定。 4. 如果更新绑定后规则描述还是英文,可以尝试清除SonarLint缓存并重启IDE: - 关闭IDEA - 删除SonarLint缓存目录(默认在用户主目录下的`.sonarlint`目录,例如:`C:\Users\<用户名>\.sonarlint` 或 `~/.sonarlint`) - 重启IDEA,重新绑定项目。 注意:SonarLint本身没有独立的语言设置,它从绑定的SonarQube服务器获取规则描述,而SonarQube的汉化是通过安装中文包实现的。因此,只要服务器是中文,同步过来的规则描述就应该是中文。 、为什么本地SonarLint扫描结果不显示在SonarQube服务器上? 原因:SonarLint和SonarQube是两个不同的工具,它们的工作方式不同。 - SonarLint:在本地IDE中实时分析代码,并将问题直接显示在IDE中。这些结果不会自动上传到SonarQube服务器。 - SonarQube:需要通过在项目根目录运行`sonar-scanner`(或通过Jenkins等CI工具)触发扫描,扫描结果会被上传到SonarQube服务器。 因此,要让问题显示在服务器上,必须通过`sonar-scanner`对项目进行扫描。 三、如何统一团队规则并分别扫描SpringBoot和Vue3+TypeScript项目? 步骤1:在SonarQube中创建统一的质量配置集(Quality Profile) 1. 登录SonarQube(已汉化,所以界面是中文)。 2. 进入“质量配置集”页面(顶部菜单“配置”->“质量配置集”)。 3. 为Java和JavaScript/TypeScript创建团队统一使用的配置集: - 在Java语言下,找到默认的配置集(如“Sonar way”),点击“复制”,命名为“Team_Java_Profile”,然后激活团队需要的所有规则。 - 同样,在JavaScript/TypeScript语言下,复制默认配置集,命名为“Team_JS_Profile”,并激活所需规则。 步骤2:在项目中配置`sonar-project.properties`文件 1. 在后端SpringBoot项目(PLPMCloudPro)的根目录下创建`sonar-project.properties`文件,内容如下: ```properties # 项目唯一标识 sonar.projectKey=plpm_springboot # 项目显示名称 sonar.projectName=PLPMCloudPro # 源代码目录 sonar.sources=src/main/java # 测试代码目录 sonar.tests=src/test/java # 编译后的class文件目录(用于计算测试覆盖率等) sonar.java.binaries=target/classes # 指定质量配置集(使用我们在SonarQube中创建的统一配置集) sonar.qualityprofile=Team_Java_Profile # 指定语言 sonar.language=java # 排除不必要的文件 sonar.exclusions=**/test/**,**/generated-**,**/resources/static/**,**/*.json ``` 2. 在前端Vue3+TypeScript项目(PLPMCLoudWeb-606)的根目录下创建`sonar-project.properties`文件,内容如下: ```properties sonar.projectKey=plpm_vue3_ts sonar.projectName=PLPMCLoudWeb-606 sonar.sources=src # 排除node_modules和dist目录 sonar.exclusions=**/node_modules/**,**/dist/**,**/*.spec.ts # 指定TypeScript的tsconfig.json路径 sonar.typescript.tsconfigPath=tsconfig.json sonar.qualityprofile=Team_JS_Profile sonar.language=js,ts ``` 步骤3:执行扫描 1. 确保已安装SonarScanner(可全局安装,也可使用Maven或Gradle插件,这里以独立SonarScanner为例): 下载地址:https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/ 安装步骤略。 2. 在项目根目录下执行扫描命令: 对于SpringBoot项目: ```bash # 在PLPMCloudPro目录下 sonar-scanner \ -Dsonar.host.url=http://你的SonarQube服务器地址:9000 \ -Dsonar.login=你的SonarQube用户token ``` 对于Vue3+TypeScript项目: ```bash # 在PLPMCLoudWeb-606目录下 sonar-scanner \ -Dsonar.host.url=http://你的SonarQube服务器地址:9000 \ -Dsonar.login=你的SonarQube用户token ``` 注意:在SonarQube中生成用户token的步骤- 登录SonarQube,点击右上角用户头像 -> 我的账户 -> 安全 -> 生成令牌。 步骤4:在SonarQube服务器查看扫描结果 扫描完成后,在SonarQube的项目页面即可看到两个项目的扫描结果。 四、如何确保团队统一使用同一套规则? 1. 将创建好的统一质量配置集(Team_Java_Profile和Team_JS_Profile)设置为对应语言的默认配置集: 在“质量配置集”页面,找到对应的配置集,点击“设为默认”。 2. 要求团队成员在本地IDE中配置SonarLint绑定到团队的质量配置集: - 在IntelliJ中,打开Settings -> Tools -> SonarLint -> Rules,选择“Use SonarQube Server settings”,然后选择对应的质量配置集,并应用到项目。 3. 将`sonar-project.properties`文件加入版本控制(如Git),这样每个团队成员在扫描时都会使用相同的配置。 五、注意事项 1. 关于Vue3+TypeScript项目扫描: 由于SonarQube 7.8版本较旧,对Vue3和TypeScript的支持可能不够完善。建议升级SonarQube到最新LTS版本(如9.9)以获得更好的支持。 2. 如果扫描时遇到规则不生效,请检查: -SonarQube中,对应质量配置集是否已激活所需规则。 - 项目扫描时是否指定了正确的质量配置集(通过`sonar.qualityprofile`属性)。 3. 关于SonarLint中文显示: 如果按照上述步骤更新绑定后,规则描述还是英文,请检查SonarQube服务器上的规则描述是否是中文。可以在SonarQube的“规则”页面查看规则描述的语言。如果服务器上也是英文,则说明汉化不彻底,需要重新安装汉化包。 最后,生成相关问题: §§相关问题§§ 1. 如何升级SonarQube 7.8到最新LTS版本? 2. 在SonarQube中如何批量激活规则? 3. 如何配置SonarLint在提交代码前自动扫描?</think>### 解决方案:SonarLint中文显示、扫描同步与团队规则统一 #### 一、SonarLint规则提示设置为中文 1. **原理**:SonarLint语言跟随SonarQube服务器配置,但需额外操作同步中文规则描述 2. **操作步骤**: ```mermaid graph TB A[登录SonarQube] --> B{进入规则管理} B --> C[导出规则为XML] C --> D[用文本编辑器批量替换] D --> E[en→zh_CN] E --> F[导入汉化规则] F --> G[SonarLint更新绑定] ``` - 具体流程: 1. 在SonarQube执行规则导出: ```bash curl -u admin:密码 -X GET "http://sonarqube:9000/api/rules/export?profile=java-profile" > rules_zh.xml ``` 2. 用文本编辑器全局替换: - 查找:`<language>en</language>` - 替换:`<language>zh_CN</language>` 3. 重新导入规则: ```bash curl -u admin:密码 -X POST -F "backup=@rules_zh.xml" "http://sonarqube:9000/api/qualityprofiles/restore" ``` 4. 在IntelliJ中更新绑定: - `Settings > Tools > SonarLint > Rules` → 点击 **Update Binding** #### 本地扫描结果未同步到服务器的原因 1. **核心差异**: | 工具 | 扫描类型 | 结果存储 | 触发方式 | |---|---|---|---| | SonarLint | 本地实时分析 | IDE内存 | 代码编辑时自动 | | SonarQube | 服务器全量扫描 | 数据库 | 需显式执行扫描命令 | 2. **解决方案**: - **首次完整扫描必须使用SonarScanner**: ```bash # SpringBoot项目 sonar-scanner -Dsonar.projectKey=plpm_springboot \ -Dsonar.java.binaries=target/classes \ -Dsonar.sources=src/main/java # Vue3+TS项目 sonar-scanner -Dsonar.projectKey=plpm_vue3_ts \ -Dsonar.sources=src \ -Dsonar.exclusions=**/node_modules/** ``` - **配置自动同步**(后续增量): ```xml <!-- pom.xml 配置示例 --> <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>3.9.1</version> <configuration> <sonar.host.url>http://sonarqube:9000</sonar.host.url> </configuration> </plugin> ``` #### 三、统一团队规则并扫描项目 1. **规则统一配置**: - **Step1**:SonarQube创建团队质量配置集 - Java规则集:`Team_Java_Profile` - JS/TS规则集:`Team_JS_TS_Profile` - **Step2**: 激活必要规则(示例激活TS规则): ```bash curl -u admin:密码 -X POST "http://sonarqube:9000/api/qualityprofiles/activate_rules?languages=ts&types=BUG,VULNERABILITY" ``` 2. **项目扫描配置**: **后端SpringBoot** (`sonar-project.properties`): ```properties sonar.projectKey=plpm_springboot sonar.projectName=PLPMCloudPro sonar.java.binaries=target/classes sonar.sources=src/main/java sonar.qualityprofile=Team_Java_Profile # 绑定统一规则 sonar.exclusions=**/test/**,**/generated/** ``` **前端Vue3+TS** (`sonar-project.properties`): ```properties sonar.projectKey=plpm_vue3_ts sonar.projectName=PLPMCLoudWeb-606 sonar.sources=src sonar.tests=src/tests sonar.typescript.tsconfigPath=tsconfig.json sonar.qualityprofile=Team_JS_TS_Profile sonar.exclusions=**/node_modules/**, dist/** ``` 3. **扫描执行**: ```bash # 后端扫描 (Maven项目) mvn sonar:sonar -Dsonar.login=admin_token # 前端扫描 (需先安装sonar-scanner) npm install -g sonarqube-scanner sonar-scanner -Dsonar.login=admin_token ``` #### 四、验证与排错 1. **验证中文规则生效**: - 在IDE中触发一个已知规则违规(如未使用变量) - 查看错误提示是否显示中文描述 2. **扫描结果验证**: ```bash # 检查扫描日志中的上报记录 grep "Upload report" .sonar/report-task.txt ``` 3. **常见问题处理**: - **问题**:Vue单文件组件未被识别 **解决**:安装SonarVue插件(需兼容版本) ```bash # 下载兼容SonarQube7.8的版本 wget https://github.com/SonarSource/sonar-vue/releases/download/1.5.0/sonar-vue-plugin-1.5.0.jar cp sonar-vue-plugin-1.5.0.jar /opt/sonarqube/extensions/plugins ``` - **问题**:TS语法解析错误 **解决**:升级SonarTS插件至2.1.0 > ⚠️ **重要提示**:SonarQube 7.8对Vue3的支持有限,若遇到组件解析问题,建议升级到[SonarQube LTS 9.9](https://www.sonarsource.com/products/sonarqube/downloads/)[^1] --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值