SonarQube通過持續的代碼品質和代碼安全性增強您的工作流程。
1.捕獲棘手的錯誤,以防止未定義的行為影響最終使用者。
2.修複危及您應用的bug,并在此過程中學習安全熱點的 AppSec。
3.確定您的代碼庫幹淨且可維護,以提高開發人員的速度!
4.适用于 29 種程式設計語言
首先安裝SonarQube,如果沒有安裝可以參考:
Windows安裝最新SonarQube版本
因為目前我們是本地使用,是以基本上都是用手工,其他CI後期在介紹吧。
1. 建立項目

建立令牌,将令牌名稱改成自己的。
上面就是已經生成好了,而且Maven腳本複制下來。
添加你要分析的語言。
經過上面的配置就可以複制運作代碼直接運作即可,如果不行的話,可以按第二步設定。
2. IDEA配置運作腳本
需要先在Maven的配置setting.xml檔案配置如下:
<pluginGroups>
<pluginGroup>org.sonarsource.scanner.maven</pluginGroup>
</pluginGroups>
<profiles>
<profile>
<id>sonar</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<sonar.host.url>
http://127.0.0.1:9000
</sonar.host.url>
<sonar.login>admin</sonar.login>
<sonar.password>密碼</sonar.password>
</properties>
</profile>
</profiles>
然後按左邊的加号:
然後回到SonarQube檢視,他會按項目名建立項目:
3. IDEA配置阿裡編碼規約
4. 問題
Insufficient privileges
java.lang.IllegalStateException: Insufficient privileges
at org.sonarsource.sonarlint.core.serverapi.ServerApiHelper.handleError(ServerApiHelper.java:126)
at org.sonarsource.sonarlint.core.serverapi.ServerApiHelper.processPage(ServerApiHelper.java:187)
at org.sonarsource.sonarlint.core.serverapi.ServerApiHelper.lambda$getPaginated$3(ServerApiHelper.java:176)
at org.sonarsource.sonarlint.core.serverapi.ServerApiHelper.lambda$consumeTimed$6(ServerApiHelper.java:252)
at org.sonarsource.sonarlint.core.serverapi.ServerApiHelper.processTimed(ServerApiHelper.java:227)
at org.sonarsource.sonarlint.core.serverapi.ServerApiHelper.consumeTimed(ServerApiHelper.java:251)
at org.sonarsource.sonarlint.core.serverapi.ServerApiHelper.getPaginated(ServerApiHelper.java:174)
at org.sonarsource.sonarlint.core.serverapi.component.ComponentApi.getSubProjects(ComponentApi.java:44)
at org.sonarsource.sonarlint.core.container.connected.update.ModuleHierarchyDownloader.fetchModuleHierarchy(ModuleHierarchyDownloader.java:47)
at org.sonarsource.sonarlint.core.container.connected.update.ProjectConfigurationDownloader.fetchHierarchy(ProjectConfigurationDownloader.java:44)
at org.sonarsource.sonarlint.core.container.connected.update.ProjectConfigurationDownloader.fetch(ProjectConfigurationDownloader.java:38)
at org.sonarsource.sonarlint.core.container.connected.update.perform.ProjectStorageUpdateExecutor.updateConfiguration(ProjectStorageUpdateExecutor.java:83)
at org.sonarsource.sonarlint.core.container.connected.update.perform.ProjectStorageUpdateExecutor.lambda$update$0(ProjectStorageUpdateExecutor.java:72)
at org.sonarsource.sonarlint.core.client.api.util.FileUtils.replaceDir(FileUtils.java:233)
at org.sonarsource.sonarlint.core.container.connected.update.perform.ProjectStorageUpdateExecutor.update(ProjectStorageUpdateExecutor.java:71)
at org.sonarsource.sonarlint.core.ConnectedSonarLintEngineImpl.updateProject(ConnectedSonarLintEngineImpl.java:543)
at org.sonarlint.intellij.tasks.BindingStorageUpdateTask.lambda$tryUpdateProjectStorages$1(BindingStorageUpdateTask.java:169)
at java.base/java.util.HashMap.forEach(HashMap.java:1336)
at org.sonarlint.intellij.tasks.BindingStorageUpdateTask.tryUpdateProjectStorages(BindingStorageUpdateTask.java:167)
at org.sonarlint.intellij.tasks.BindingStorageUpdateTask.updateProjectStorages(BindingStorageUpdateTask.java:133)
at org.sonarlint.intellij.tasks.BindingStorageUpdateTask.run(BindingStorageUpdateTask.java:109)
at org.sonarlint.intellij.tasks.BindingStorageUpdateTask$1.run(BindingStorageUpdateTask.java:81)
at com.intellij.openapi.progress.impl.CoreProgressManager.startTask(CoreProgressManager.java:450)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.startTask(ProgressManagerImpl.java:117)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcessWithProgressSynchronously$8(CoreProgressManager.java:556)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$new$0(ProgressRunner.java:81)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$3(ProgressRunner.java:243)
at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:183)
at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:705)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:647)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:63)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:170)
at com.intellij.openapi.progress.impl.ProgressRunner.lambda$submit$4(ProgressRunner.java:243)
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665)
at java.base/java.security.AccessController.doPrivileged(Native Method)
at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665)
at java.base/java.lang.Thread.run(Thread.java:829)