我在Sonar Eclipse插件和声纳局部分析方面存在问题,并结合了Checkstyle Suppression文件配置。
我正在使用:
在SonarQube UI中,我在“设置”中设置了>系统 - >常规设置 - > Checkstyle - >过滤器:
<module name="SuppressionCommentFilter" />
<module name="SuppressionFilter">
<property name="file" value="${main.dir}/config/checkstyle-suppressions.xml" />
</module>
在我的Maven pom.xml中,我有:
<properties>
<sonar.exclusions>**/gener/*.java</sonar.exclusions>
<main.dir>${basedir}/..</main.dir>
</properties>
当我运行本地分析属性时, sonar.exclusions 被正确使用,但对于Checkstyle我得到了异常:
org.xml.sax.SAXException: Property ${main.dir} has not been set
当我运行Jenkins的“远程”分析表时,正确使用 main.dir 。
那么, main.dir 为什么不用于本地分析呢?或问题出在哪里?
在文档中:
可以在各个地方设置配置本地分析的参数。 以下是参数的层次结构:
SonarQube Web UI中定义的参数
pom.xml文件中设置的参数(仅适用于Maven项目,安装了m2e连接器)将覆盖在 UI
- Eclipse中定义的参数将覆盖pom文件中定义的参数(转到Window&gt; Preferences&gt; Sonar&gt; Local analysis 属性)
- 在Eclipse中的项目级别定义的参数将覆盖在Eclipse级别定义的参数(右键单击项目并继续 到属性&gt;声纳&gt;本地分析属性)
非常感谢您的回复。
完成StackTrace:
Exception in thread "main" org.sonar.runner.impl.RunnerException: Unable to execute Sonar
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:79)
at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:63)
at java.security.AccessController.doPrivileged(Native Method)
at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:57)
at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
at org.sonar.runner.impl.BatchLauncherMain.execute(BatchLauncherMain.java:41)
at org.sonar.runner.impl.BatchLauncherMain.main(BatchLauncherMain.java:59)
Caused by: org.sonar.api.utils.SonarException: Can not execute Checkstyle
at org.sonar.plugins.checkstyle.CheckstyleExecutor.execute(CheckstyleExecutor.java:89)
at org.sonar.plugins.checkstyle.CheckstyleSensor.analyse(CheckstyleSensor.java:44)
at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:70)
at org.sonar.batch.phases.Phases.execute(Phases.java:101)
at org.sonar.batch.scan.ScanContainer.doStart(ScanContainer.java:147)
at org.sonar.batch.bootstrap.Container.start(Container.java:72)
at org.sonar.batch.scan.ScanTask.scan(ScanTask.java:65)
at org.sonar.batch.scan.ScanTask.scanRecursively(ScanTask.java:56)
at org.sonar.batch.scan.ScanTask.execute(ScanTask.java:49)
at org.sonar.batch.bootstrap.TaskContainer.doStart(TaskContainer.java:188)
at org.sonar.batch.bootstrap.Container.start(Container.java:72)
at org.sonar.batch.bootstrap.TaskBootstrapContainer.executeTask(TaskBootstrapContainer.java:73)
at org.sonar.batch.bootstrap.TaskBootstrapContainer.doStart(TaskBootstrapContainer.java:62)
at org.sonar.batch.bootstrap.Container.start(Container.java:72)
at org.sonar.batch.bootstrap.BootstrapContainer.doStart(BootstrapContainer.java:104)
at org.sonar.batch.bootstrap.Container.start(Container.java:72)
at org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:88)
at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:72)
at org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:75)
... 6 more
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: unable to read
C:\Development\Java\workspace\eclipse\Juno\SR2\x86\CSA\TRUNK\.metadata\.plugins
\org.eclipse.core.resources\.projects\mfgw-module-ffp-fbp-upgrade-core-ejb
\org.sonar.ide.eclipse.core\checkstyle.xml - unable to parse configuration stream -
Property ${main.dir} has not been set
at com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:346)
at com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:286)
at org.sonar.plugins.checkstyle.CheckstyleConfiguration.toCheckstyleConfiguration(CheckstyleConfiguration.java:113)
at org.sonar.plugins.checkstyle.CheckstyleConfiguration.getCheckstyleConfiguration(CheckstyleConfiguration.java:107)
at org.sonar.plugins.checkstyle.CheckstyleExecutor.execute(CheckstyleExecutor.java:83)
... 29 more
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: unable to parse
configuration stream - Property ${main.dir} has not been set
at com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:410)
at com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:338)
... 33 more
Caused by: org.xml.sax.SAXException: Property ${main.dir} has not been set
at com.puppycrawl.tools.checkstyle.ConfigurationLoader$InternalLoader.startElement(ConfigurationLoader.java:158)
at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown Source)
at org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.emptyElement(Unknown Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at com.puppycrawl.tools.checkstyle.api.AbstractLoader.parseInputSource(AbstractLoader.java:98)
at com.puppycrawl.tools.checkstyle.ConfigurationLoader.parseInputSource(ConfigurationLoader.java:273)
at com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:397)
... 34 more