2012-07-18 83 views

回答

2

偉大的問題!

這沒有內置功能。因此,我們不應該期望任何解決方案100%方便 - 修改當前腳本編輯器內容(如果可能的話)並不是一件簡單的任務。所以,無論你做什麼,它仍然是某種妥協。

一般來說,任務有三方面:

  1. 獲取當前單元代碼。

  2. 格式化代碼。

  3. 將代碼放回單元。

根據我的瞭解,項目1和3只能通過創建一個TestComplete插件來完成 - 項目節點訪問的編輯並不是一件容易的事情。

更新:傻我!有一種方法可以訪問腳本編輯器代碼 - 我已經更新了下面的部分。

什麼會幫助我們避免切換到不同的應用程序,是Script Extensions

  • 我們在一個腳本擴展的形式創建一個自定義檢查點,並將其安裝到TestComplete。因此,我們可以在工具欄上找到一個按鈕,我們可以通過點擊來調用我們的代碼。

  • 在設計時間操作中,我們調用一些讀取編輯器內容的代碼,然後使用外部代碼格式化功能,並用格式化代碼替換編輯器內容。

看到其他TestComplete用戶可以推薦的實現會非常有趣!首先,我發佈了一個解決方案,其中包括使用外部網站格式化VBScript代碼(http://www.vbindent.com/)。我知道這篇文章的起始者可能使用了JScript,但我還沒有找到JScript格式化器。

我的解決方案是一個簡單的腳本擴展。我不能在這裏發表的文件,所以我將發佈兩個腳本擴展文件的代碼:

說明文件:

<!-- Description.xml --> 
<?xml version="1.0" encoding="UTF-8"?> 
<ScriptExtensionGroup> 
    <Category Name="Checkpoints"> 
    <ScriptExtension Name="VBScript Code Indent" Author="SmartBear Software" Version="0.1" HomePage="smartbear.com"> 
     <Script Name="VBIndent.js"> 
     <DesignTimeAction Name="Indent Current VBScript Unit" Routine="DesignTimeExecute"/> 
     </Script> 
     <Description> 
     Indents VBScript code in the currently active unit. 
     </Description> 
    </ScriptExtension> 
    </Category> 
</ScriptExtensionGroup> 

代碼文件:

// VBIndent.js 
function DesignTimeExecute() 
{ 
    if (CodeEditor.IsEditorActive) 
    { 
    var newCode = IndentVBSCode_Through_VBIndent(CodeEditor.Text); 
    if (null == newCode) 
     return; 
    CodeEditor.Text = newCode; 
    } 
} 

function IndentVBSCode_Through_VBIndent(codeToIndent) 
{ 
    var URL_VBIndent = "http://www.vbindent.com/?indent"; 

    var httpObj = Sys.OleObject("MSXML2.XMLHTTP"); 

    httpObj.open("POST", URL_VBIndent, false); 
    httpObj.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    httpObj.send("thecode=" + escape(codeToIndent)); 

    var responseText = httpObj.responseText; 

    // Extract the indented code from the response 
    var rx = /<textarea name=\"thecode\".*?>((.*\n)*?)<\/textarea>/; 
    matches = rx.exec(responseText); 
    if (null == matches) 
    { 
    return null; 
    } 
    codeIndented = matches[1]; 
    return codeIndented; 
} 

在創建這些文件,並將它們放在類似「\ Bin \ Extensions \ ScriptExtensions \ VBIndent」的文件中,然後單擊「文件|安裝腳本擴展|重新加載」,您將在自定義檢查點下拉菜單中看到新的「縮進當前VBScript單元」工具欄上的按鈕。單擊該元素將格式化當前活動編輯器中的VBScript代碼。

因此,這是爲了清楚瞭解解決方案的外觀。歡迎提供更好的建議!分享你的意見!

+0

來吧,人 - 敢走!建議您的解決方案! :)複雜的部分已經被整理出來 - 您只需要使用代碼更改DesignTimeExecute例程實現。我甚至會在這裏開始賞金,但看起來我不能這樣做...... – Alex 2012-07-20 08:56:07

+0

我的想法可能是人們不使用testComplete IDE?我經常在netbeans中拋出我的代碼,然後回到testComplete中對其進行格式化。 – 2012-07-23 00:38:54

+0

http://jsbeautifier.org/我試圖合併這個,以便讓你的解決方案適用於Javascript – 2012-07-23 16:19:55

相關問題