我可以成功地将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")
}
}
同一套代码复制,但不同的名称
对于上述示例,
如何定义规则以识别问题(如果有的话)?
如何找到具有相同代码集但具有不同功能名称的 的重复功能?这将有助于减少冗余功能
与JavaScript代码有什么不同? –
@ Pierre-Yves-SonarSourceTeam这是一个Sahi脚本,并不完全是JS。无论我们用下划线看到的是内置的sahi API。我想在sahi脚本文件中基本检查下面。定义了多少个函数?它的参数数量是多少?缩进?重复的代码行?是否try ... catch有适当的例外?如果循环应该有_isVisible API而不是_exists? – sridattas
关于在Java和JavaScript中查找代码克隆的讨论,请参阅此Q/A:http://stackoverflow.com/q/40799220/120163 –