2016-11-15 32 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)。 –

相關問題