2016-11-15 111 views
0

我可以成功地将Sahi自动化工具集成到SonarQube中,并且可以得到结果,但问题是定义一组规则来报告与sahi脚本相关的问题并查找重复的功能。如何定义规则来识别sonar qube中sahi脚本的问题/重复函数?它是否仅支持用于分析的javascript或java语法?

这里是SAHI公司的代码片段

文件名:sample1.sah

function eno_selectFromCombo($Field_Name, $Value) //Function name 
{ 
    if($Value!="") 
    { 
     _setStrictVisibilityCheck(true); 
     if(_exists(_select($Field_Name))) 
     { 
      _assertEqual(false, _select($Field_Name).disabled) 
      _setSelected(_select($Field_Name),$Value); 
     } 
     else 
     { 
      onScriptError($Field_Name + " doesn't exist ") 
     } 
     _setStrictVisibilityCheck(false); 
    } 
    else 
    { 
     _log($Field_Name + " is set with default value") 
    } 
} 

文件名:sample2.sah

function eno_selectCombo($Field_Name, $Value) //Different function name but same set of code 
    { 
     if($Value!="") 
     { 
      _setStrictVisibilityCheck(true); 
      if(_exists(_select($Field_Name))) 
      { 
       _assertEqual(false, _select($Field_Name).disabled) 
       _setSelected(_select($Field_Name),$Value); 
      } 
      else 
      { 
       onScriptError($Field_Name + " doesn't exist ") 
      } 
      _setStrictVisibilityCheck(false); 
     } 
     else 
     { 
      _log($Field_Name + " is set with default value") 
     } 
    } 

同一套代码复制,但不同的名称

对于上述示例,

  • 如何定义规则以识别问题(如果有的话)?

    如何找到具有相同代码集但具有不同功能名称的 的重复功能?这将有助于减少冗余功能

+0

与JavaScript代码有什么不同? –

+0

@ Pierre-Yves-SonarSourceTeam这是一个Sahi脚本,并不完全是JS。无论我们用下划线看到的是内置的sahi API。我想在sahi脚本文件中基本检查下面。定义了多少个函数?它的参数数量是多少?缩进?重复的代码行?是否try ... catch有适当的例外?如果循环应该有_isVisible API而不是_exists? – sridattas

+0

关于在Java和JavaScript中查找代码克隆的讨论,请参阅此Q/A:http://stackoverflow.com/q/40799220/120163 –

回答

0

即使这些文件具有对外部API的引用,它们似乎也会使用标准的JavaScript语法。您应该可以使用SonarQube JavaScript插件分析这些文件。如果您的文件名以“sah”结尾,则应在sonar-project.properties中包含以下行:

sonar.javascript.file.suffixes=.js,.sah 
+0

感谢您的建议,它有所帮助。但我想定义一些新规则并隐藏/删除规则。可能吗? – sridattas

+0

您可以[在JavaScript插件的顶部写入自定义规则](http://docs.sonarqube.org/display/PLUG/Custom+Rules+for+JavaScript)。您可以取消激活[质量配置文件]中的现有规则(http://docs.sonarqube.org/display/SONAR/Quality+Profiles)。 –

相关问题