Sonar analysis for java app is failing because of node not installed

Must-share information (formatted with Markdown):

  • which versions are you using (SonarQube, Scanner, Plugin, and any relevant extension) - sonar-maven-plugin 3.9.1.2184
  • what are you trying to achieve - trying to analyse the java files
  • what have you tried so far to achieve this

Hello Folks,

One of the teams is facing an issue where they are trying to scan/analyse java project with sonar-maven plugin but they are getting :-

##[warning]No analyses found in this build! Please check your build configuration.

While looking at logs I can see the following:

INFO] Sensor JavaSquidSensor [java] (done) | time=27128ms
2022-06-08T12:30:10.9048352Z [INFO] Sensor CSS Metrics [cssfamily]
2022-06-08T12:30:11.0036022Z [INFO] Sensor CSS Metrics [cssfamily] (done) | time=93ms
2022-06-08T12:30:11.0036905Z [INFO] Sensor CSS Rules [cssfamily]
2022-06-08T12:30:12.0516768Z [ERROR] CSS rules were not executed. Error when running: 'node -v'. Is Node.js available during analysis?
2022-06-08T12:30:12.0557995Z org.sonarsource.nodejs.NodeCommandException: Error when running: 'node -v'. Is Node.js available during analysis?
2022-06-08T12:30:12.0565222Z 	at org.sonarsource.nodejs.NodeCommand.start(NodeCommand.java:81)
2022-06-08T12:30:12.0589326Z 	at org.sonarsource.nodejs.NodeCommandBuilderImpl.getVersion(NodeCommandBuilderImpl.java:181)
2022-06-08T12:30:12.0599756Z 	at org.sonarsource.nodejs.NodeCommandBuilderImpl.checkNodeCompatibility(NodeCommandBuilderImpl.java:159)
2022-06-08T12:30:12.0615188Z 	at org.sonarsource.nodejs.NodeCommandBuilderImpl.build(NodeCommandBuilderImpl.java:134)
2022-06-08T12:30:12.0616216Z 	at org.sonar.css.plugin.server.CssAnalyzerBridgeServer.initNodeCommand(CssAnalyzerBridgeServer.java:157)
2022-06-08T12:30:12.0617147Z 	at org.sonar.css.plugin.server.CssAnalyzerBridgeServer.startServer(CssAnalyzerBridgeServer.java:107)
2022-06-08T12:30:12.0618145Z 	at org.sonar.css.plugin.server.CssAnalyzerBridgeServer.startServerLazily(CssAnalyzerBridgeServer.java:177)
2022-06-08T12:30:12.0620587Z 	at org.sonar.css.plugin.CssRuleSensor.execute(CssRuleSensor.java:99)
2022-06-08T12:30:12.0624912Z 	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
2022-06-08T12:30:12.0627050Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
2022-06-08T12:30:12.0636021Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
2022-06-08T12:30:12.0636980Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
2022-06-08T12:30:12.0637914Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
2022-06-08T12:30:12.0638735Z 	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
2022-06-08T12:30:12.0639563Z 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
2022-06-08T12:30:12.0640355Z 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
2022-06-08T12:30:12.0641145Z 	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:392)
2022-06-08T12:30:12.0642192Z 	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:388)
2022-06-08T12:30:12.0643328Z 	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:385)
2022-06-08T12:30:12.0644334Z 	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:357)
2022-06-08T12:30:12.0645410Z 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
2022-06-08T12:30:12.0647972Z 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
2022-06-08T12:30:12.0649153Z 	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:150)
2022-06-08T12:30:12.0649997Z 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
2022-06-08T12:30:12.0650789Z 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
2022-06-08T12:30:12.0651663Z 	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
2022-06-08T12:30:12.0652365Z 	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
2022-06-08T12:30:12.0653174Z 	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
2022-06-08T12:30:12.0655469Z 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-06-08T12:30:12.0656260Z 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-06-08T12:30:12.0657132Z 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-06-08T12:30:12.0657879Z 	at java.lang.reflect.Method.invoke(Method.java:498)
2022-06-08T12:30:12.0658650Z 	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
2022-06-08T12:30:12.0659381Z 	at com.sun.proxy.$Proxy62.execute(Unknown Source)
2022-06-08T12:30:12.0660056Z 	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
2022-06-08T12:30:12.0662144Z 	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
2022-06-08T12:30:12.0663350Z 	at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
2022-06-08T12:30:12.0664236Z 	at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:108)
2022-06-08T12:30:12.0665309Z 	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
2022-06-08T12:30:12.0666182Z 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
2022-06-08T12:30:12.0666985Z 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
2022-06-08T12:30:12.0667779Z 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
2022-06-08T12:30:12.0668639Z 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
2022-06-08T12:30:12.0669544Z 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
2022-06-08T12:30:12.0670501Z 	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
2022-06-08T12:30:12.0671422Z 	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
2022-06-08T12:30:12.0672204Z 	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
2022-06-08T12:30:12.0672917Z 	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
2022-06-08T12:30:12.0673642Z 	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
2022-06-08T12:30:12.0674345Z 	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
2022-06-08T12:30:12.0675200Z 	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
2022-06-08T12:30:12.0675895Z 	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
2022-06-08T12:30:12.0676535Z 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-06-08T12:30:12.0677251Z 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-06-08T12:30:12.0678063Z 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-06-08T12:30:12.0678975Z 	at java.lang.reflect.Method.invoke(Method.java:498)
2022-06-08T12:30:12.0679798Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
2022-06-08T12:30:12.0680606Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
2022-06-08T12:30:12.0681635Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
2022-06-08T12:30:12.0682445Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
2022-06-08T12:30:12.0683184Z Caused by: java.io.IOException: Cannot run program "node": error=2, No such file or directory
2022-06-08T12:30:12.0683892Z 	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
2022-06-08T12:30:12.0684784Z 	at org.sonarsource.nodejs.NodeCommand$ProcessWrapperImpl.start(NodeCommand.java:162)
2022-06-08T12:30:12.0685591Z 	at org.sonarsource.nodejs.NodeCommand.start(NodeCommand.java:77)
2022-06-08T12:30:12.0686189Z 	... 59 common frames omitted
2022-06-08T12:30:12.0698649Z Caused by: java.io.IOException: error=2, No such file or directory
2022-06-08T12:30:12.0699654Z 	at java.lang.UNIXProcess.forkAndExec(Native Method)
2022-06-08T12:30:12.0700354Z 	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
2022-06-08T12:30:12.0701036Z 	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
2022-06-08T12:30:12.0701697Z 	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
2022-06-08T12:30:12.0702285Z 	... 61 common frames omitted

And also the following

[ERROR] Error when running: 'node -v'. Is Node.js available during analysis?
2022-06-08T12:30:17.6129729Z org.sonarsource.nodejs.NodeCommandException: Error when running: 'node -v'. Is Node.js available during analysis?
2022-06-08T12:30:17.6130601Z 	at org.sonarsource.nodejs.NodeCommand.start(NodeCommand.java:81)
2022-06-08T12:30:17.6131448Z 	at org.sonarsource.nodejs.NodeCommandBuilderImpl.getVersion(NodeCommandBuilderImpl.java:181)
2022-06-08T12:30:17.6132331Z 	at org.sonarsource.nodejs.NodeCommandBuilderImpl.checkNodeCompatibility(NodeCommandBuilderImpl.java:159)
2022-06-08T12:30:17.6133260Z 	at org.sonarsource.nodejs.NodeCommandBuilderImpl.build(NodeCommandBuilderImpl.java:134)
2022-06-08T12:30:17.6134159Z 	at org.sonar.plugins.javascript.eslint.EslintBridgeServerImpl.initNodeCommand(EslintBridgeServerImpl.java:174)
2022-06-08T12:30:17.6135300Z 	at org.sonar.plugins.javascript.eslint.EslintBridgeServerImpl.startServer(EslintBridgeServerImpl.java:119)
2022-06-08T12:30:17.6136248Z 	at org.sonar.plugins.javascript.eslint.EslintBridgeServerImpl.startServerLazily(EslintBridgeServerImpl.java:191)
2022-06-08T12:30:17.6137156Z 	at org.sonar.plugins.javascript.eslint.AbstractEslintSensor.startBridge(AbstractEslintSensor.java:150)
2022-06-08T12:30:17.6185331Z 	at org.sonar.plugins.javascript.eslint.AbstractEslintSensor.execute(AbstractEslintSensor.java:124)
2022-06-08T12:30:17.6187757Z 	at org.sonar.plugins.javascript.eslint.JavaScriptEslintBasedSensor.execute(JavaScriptEslintBasedSensor.java:52)
2022-06-08T12:30:17.6189163Z 	at org.sonar.scanner.sensor.AbstractSensorWrapper.analyse(AbstractSensorWrapper.java:48)
2022-06-08T12:30:17.6190125Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:85)
2022-06-08T12:30:17.6191004Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.lambda$execute$1(ModuleSensorsExecutor.java:59)
2022-06-08T12:30:17.6191907Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.withModuleStrategy(ModuleSensorsExecutor.java:77)
2022-06-08T12:30:17.6192748Z 	at org.sonar.scanner.sensor.ModuleSensorsExecutor.execute(ModuleSensorsExecutor.java:59)
2022-06-08T12:30:17.6193568Z 	at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:82)
2022-06-08T12:30:17.6194406Z 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
2022-06-08T12:30:17.6195414Z 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
2022-06-08T12:30:17.6196216Z 	at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:392)
2022-06-08T12:30:17.6197042Z 	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:388)
2022-06-08T12:30:17.6197902Z 	at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:385)
2022-06-08T12:30:17.6198747Z 	at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:357)
2022-06-08T12:30:17.6199564Z 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
2022-06-08T12:30:17.6200377Z 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
2022-06-08T12:30:17.6201312Z 	at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:150)
2022-06-08T12:30:17.6202133Z 	at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:137)
2022-06-08T12:30:17.6203330Z 	at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:123)
2022-06-08T12:30:17.6204147Z 	at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:72)
2022-06-08T12:30:17.6205226Z 	at org.sonar.batch.bootstrapper.Batch.execute(Batch.java:66)
2022-06-08T12:30:17.6206062Z 	at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:46)
2022-06-08T12:30:17.6206832Z 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-06-08T12:30:17.6207567Z 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-06-08T12:30:17.6208373Z 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-06-08T12:30:17.6209086Z 	at java.lang.reflect.Method.invoke(Method.java:498)
2022-06-08T12:30:17.6209867Z 	at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
2022-06-08T12:30:17.6210581Z 	at com.sun.proxy.$Proxy62.execute(Unknown Source)
2022-06-08T12:30:17.6211278Z 	at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:189)
2022-06-08T12:30:17.6212074Z 	at org.sonarsource.scanner.api.EmbeddedScanner.execute(EmbeddedScanner.java:138)
2022-06-08T12:30:17.6212903Z 	at org.sonarsource.scanner.maven.bootstrap.ScannerBootstrapper.execute(ScannerBootstrapper.java:65)
2022-06-08T12:30:17.6213750Z 	at org.sonarsource.scanner.maven.SonarQubeMojo.execute(SonarQubeMojo.java:108)
2022-06-08T12:30:17.6214567Z 	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
2022-06-08T12:30:17.6216963Z 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
2022-06-08T12:30:17.6218133Z 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
2022-06-08T12:30:17.6218946Z 	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
2022-06-08T12:30:17.6219826Z 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
2022-06-08T12:30:17.6220755Z 	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
2022-06-08T12:30:17.6221718Z 	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
2022-06-08T12:30:17.6222630Z 	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
2022-06-08T12:30:17.6223388Z 	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
2022-06-08T12:30:17.6224115Z 	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
2022-06-08T12:30:17.6224960Z 	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
2022-06-08T12:30:17.6225745Z 	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:957)
2022-06-08T12:30:17.6226436Z 	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:289)
2022-06-08T12:30:17.6227112Z 	at org.apache.maven.cli.MavenCli.main(MavenCli.java:193)
2022-06-08T12:30:17.6227777Z 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2022-06-08T12:30:17.6228494Z 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2022-06-08T12:30:17.6229315Z 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2022-06-08T12:30:17.6230063Z 	at java.lang.reflect.Method.invoke(Method.java:498)
2022-06-08T12:30:17.6230811Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
2022-06-08T12:30:17.6231606Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
2022-06-08T12:30:17.6232385Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
2022-06-08T12:30:17.6233178Z 	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
2022-06-08T12:30:17.6233928Z Caused by: java.io.IOException: Cannot run program "node": error=2, No such file or directory
2022-06-08T12:30:17.6234776Z 	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
2022-06-08T12:30:17.6235728Z 	at org.sonarsource.nodejs.NodeCommand$ProcessWrapperImpl.start(NodeCommand.java:162)
2022-06-08T12:30:17.6236540Z 	at org.sonarsource.nodejs.NodeCommand.start(NodeCommand.java:77)
2022-06-08T12:30:17.6237299Z 	... 61 common frames omitted
2022-06-08T12:30:17.6237851Z Caused by: java.io.IOException: error=2, No such file or directory
2022-06-08T12:30:17.6238490Z 	at java.lang.UNIXProcess.forkAndExec(Native Method)
2022-06-08T12:30:17.6239096Z 	at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
2022-06-08T12:30:17.6239744Z 	at java.lang.ProcessImpl.start(ProcessImpl.java:134)
2022-06-08T12:30:17.6240406Z 	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
2022-06-08T12:30:17.6240976Z 	... 63 common frames omitted

It appears you have some CSS files being indexed.

  • You can either try excluding these files
  • Or have Node.JS 14+ installed on the machine performing analysis (required for JS, TS, and CSS analysis)