Language of Javascript file can not be decided as the file matches patterns with the C# rule as well

I am running SonarCloud on an Azure DevOps project that I haven’t worked with for the last two years. The repository has both C# and Javascript code in it. It was working properly before, but I am now getting the following error:

Language of file 'filename.dev.js' can not be decided as the file matches patterns of both sonar.lang.patterns.cs : **/*.cs,**/*.js and sonar.lang.patterns.js : **/*.js,**/*.jsx,**/*.mjs,**/*.vue

When I inspect the Languages in the project settings (screenshot below), I can see that in the C# patterns there is only .cs files. But I do see as well that the keys don’t match : the key in the project settings is sonar.cs.file.suffixes and the key in the error is sonar.lang.patterns.cs. Any idea what might be the issue?

EDIT

If I explicitly set the key identified in the error to use only .cs files, with the below property, it works. But I would like to avoid this

sonar.lang.patterns.cs=**/*.cs

Hi,

We don’t set .js as a C# pattern, so this is probably coming from analysis parameters. The first thing I’d do is:

  • remove your sonar.lang.patterns.cs setting
  • add sonar.scanner.dumpToFile=[path to file]

To see exactly what analysis is getting. You’ll see in here a conflation of things explicitly set at the four levels described at the top of this page. (Yes, those are the SonarQube docs, and you’ve tagged this SonarCloud. It should be the same for both, but I’m not sure where that hierarchy ended up in the reorganized SC docs.) That will accomplish confirming (or not!) that somewhere else that file suffix is being set.

And then the question becomes tracking down where.

 
Ann

Hi and thank you for your reply!

I tried to add the below property in the sonar cloud scanner analysis parameters, but the file is not being created. The path in the property is the exact path in the Azure DevOps agent, but the file is not being created there. Is there an example on how to properly use this property in Azure DevOps?

sonar.scanner.dumpToFile=/home/vsts/work/1/s/output.txt

Hi,

I don’t think there is.

I guess you’ll need to just manually check the places that property could be being set:

  • analysis command line (or some sort of ‘extra properties’ input)
  • project configuration files (e.g. your .yml file)
  • in the scanner installation (see the part about <SonarQubeAnalysisProperties>)
  • in the project file
  • in the UI at the project level
  • in the UI at the Org level

 
HTH,
Ann

There was indeed a C# misconfigured rule in the UI at the project level, matching .js files. But in another project! I couldn’t find it at first, because I was using the same key for the two projects. It is fixed now :slight_smile:

Thanks for your help!

1 Like