我可以成功地將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 –