当前位置: 首页 > 知识库问答 >
问题:

使用Jenkins的Maven聚合器对c#多模块项目进行Sonarqube StyleCop分析

太叔高义
2023-03-14

我有一个C#多模块项目,我想运行SonarQube分析。这个项目是通过聚合器pom文件使用Maven构建的。声纳分析工作正常,模块被找到,声纳分析完成。然而,我没有看到任何违反StyleCop的行为。举个例子

[INFO] [14:41:01.053] Sensor org.sonar.plugins.stylecop.StyleCopSensor@1d5df31...
[INFO] [14:41:01.148] Microsoft (R) Build Engine version 4.0.30319.18408
[INFO] [14:41:01.149] [Microsoft .NET Framework, version 4.0.30319.18444]
[INFO] [14:41:01.149] Copyright (C) Microsoft Corporation. All rights reserved.
[INFO] [14:41:01.149] 
[INFO] [14:41:01.189] Build started 21/11/2014 14:41:01.
[INFO] [14:41:01.410] Project "C:\Jenkins\workspace\xxx\xxx\trunk\src\target\sonar\StyleCop-msbuild.proj" on node 1 (default targets).
[INFO] [14:41:01.411] StyleCopLaunch:
[INFO] [14:41:01.411]   No violations encountered
[INFO] [14:41:01.416] Done Building Project "C:\Jenkins\workspace\xxx\xxx\trunk\src\target\sonar\StyleCop-msbuild.proj" (default targets).
[INFO] [14:41:01.421] 
[INFO] [14:41:01.421] Build succeeded.
[INFO] [14:41:01.421]     0 Warning(s)
[INFO] [14:41:01.421]     0 Error(s)
[INFO] [14:41:01.422] 
[INFO] [14:41:01.422] Time Elapsed 00:00:00.24
[INFO] [14:41:01.662] Sensor org.sonar.plugins.stylecop.StyleCopSensor@1d5df31 done: 609 ms

如果我在不同的Jenkins作业中单独运行每个模块,我会看到所有的违规行为,包括StyleCop违规行为,所以当我使用聚合器pom时,问题就来了。我在SonarQube中使用以下插件

  • C#3.3
  • Visual Studio项目的分析引导程序1.2

声纳的特性是

sonar.sourceEncoding=UTF-8
sonar.visualstudio.enable=true
sonar.exclusions=**/Reference.cs,**/*.designer.cs,**/*.Designer.cs,**/*.g.cs,**/target/**
sonar.stylecop.projectFilePath=trunk/src/

我被迫指定project ectFilePath,因为如果我不这样做,分析就会失败。启用Bootstrapper后,我认为项目文件会自动检测到。是否有其他方法为每个模块指定project ectFilePath?它们都在同一个文件夹结构中继/src/下。

我也尝试过单独定义模块,因为这里没有运气。我已经努力实现这个目标两天了,我不知道还能尝试什么。

任何帮助都将不胜感激!

共有1个答案

丁沛
2023-03-14

我会禁用VS引导程序并使用核心C#设置

# Core CSharp settings
sonar.dotnet.visualstudio.solution.file=mySolution.sln
sonar.dotnet.test.assemblies=*Test*.dll
sonar.skippedModules=TestProject1,TestProject2

# VS Bootstrapper settings
sonar.visualstudio.enable=false 

# Scan Directories
sonar.projectBaseDir=SourceDirectory
sonar.dotnet.assemblies=OutputDirectory\.
sonar.dotnet.test.assemblies=OutputDirectory\

默认情况下,这将使用sonar规则来分析代码(.cs)文件。您可以选择StyleCop/FxCop/Resharper,也可以将它们添加到设置文件中。

 类似资料:
  • 我有一个多模块maven应用程序,我们需要通过Jenkins构建。项目结构如下: 现在,mvn清洁安装-fa.xml工作正常。为此,我创建了一个詹金斯的工作。现在,和a.xml一样,我有另一个项目b.xml.b.xml有和a.xml相同的代码,除了不同的Ids。所以,我又为詹金斯创造了一份工作b.xml.两份工作都很好。但是,现在我想根据我们在Git中提交的项目,从单个Jenkins工作中构建这两

  • 问题内容: 这是一个基本问题,我只是不太熟悉Maven多模块结构。说,我有一个Web应用程序。我想将一些模块连接到它(某些服务)。我是否需要仅将其中一个模块(依赖于其他模块)制作为一个Web应用程序,然后运行它?一开始我以为我可以运行整个项目,但是这个选项在我的IDE中是无效的(我现在正在使用NetBeans),这使我认为我应该运行一个类似于主模块的东西(在这种情况下为Web应用程序) )。是这样

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

  • 问题内容: 我有一个多模块Maven项目,其中有多个微服务作为模块,因此我的父母中列出了一些模块,如下所示: 这里是依赖项,因此我在下面列出了依赖项 : 当我在本地运行时,按预期方式在被调用之前,但是在詹金斯中,它正在尝试构建然后使构建失败说: 我是否需要运行其他作业或重新排序模块,从本地到Jenkins有什么不同?感谢对此的任何帮助。 问题答案: 众所周知,问题在于子模块之间的依赖关系失败,因为

  • 我这里有一个多模块maven项目。 父项目共有3个模块,with-paranamer,with-paranamer。 下面是项目的结构。 我想使用exec-maven-plugin在withon-paranamer模块中执行类。因此,我在这里的parent pom.xml中的pluginManagement下添加了exec-maven-plugin。 在unit-paranamer模块中,我添加了

  • 关于maven项目结构,我有两个问题: 1)我正在创建一个maven多模块项目,并且想知道是否可以将模块的所有公共依赖项放在父POM中?这是正确的做法吗? 2)如果我正在创建一个包含所有web.xml和JSP文件的maven webapp项目,那么web控制器、侦听器和模型对象应该驻留在哪里?在一个单独的maven jar项目中还是在同一个webapp项目中?