開源工具abaplint的介紹

長期以來,SAP提供的標準ABAP開發工具是咱們對代碼進行檢查的惟一方式。這意味着咱們只能對ABAP服務器上的ABAP代碼作出分析,而離線代碼則成爲了純粹的文本,開發者沒法對其進行檢查。abaplint的出現改變了這一點,它能夠在必定程度上「理解」代碼,幫助咱們解決一些問題,和SAP的標準工具造成有效的互補。本文會介紹ABAP開發相關的工具abaplint以及它在開發過程當中的應用。html

 

本文連接:http://www.javashuo.com/article/p-ghakfled-cb.htmlgit

原創內容,轉載請註明github

基本介紹

lint或linter是一種靜態分析工具,能夠分析並標記代碼中的錯誤、bug、可疑結構。 abaplint是ABAP語言的linter,它基於typescript,能夠在多種平臺工做,做者是Lars Hvam(同時也是abapGit的做者)。typescript

項目地址:https://github.com/abaplint/abaplintjson

和Code Inspector等其它靜態分析工具相似,abaplint能夠作到幫助咱們找到有問題的代碼、確保統一的代碼風格等事情。服務器

應用

在編輯器中的應用

以Visual Studio Code中的abaplint插件爲例,它能夠分析出代碼中的錯誤,以下圖,abaplint找出了短短一段代碼中的10個問題。app

 

 

鼠標劃過報錯內容時,編輯器也會給出具體提示,以下圖,(上面的黑色主題的提示框邊界不是很明顯,爲了讓讀者看清楚提示框,這裏主題顏色使用了Solarized Light)eclipse

在持續集成(CI)中的應用

在編輯器中使用abaplint對代碼進行實時檢查是一種典型的應用方式,還有一種應用方式是經過abaplint對代碼進行自動檢查,它能夠是持續集成中的一個場景。編輯器

好比,若是以Github做爲代碼託管平臺,能夠安裝Github的abaplint應用(https://github.com/apps/abaplint),配置須要檢查的repo後,每當對相應的repo發起pr或push,都會有自動的代碼檢查,Github也會顯示檢查結果。(相似SAP系統中的傳輸前檢查CTS_REQUEST_CHECK)ide

下圖是個人配置,

 

 

進行一次commit以後,能夠看到abaplint給出了26處問題和問題所在的代碼位置。

 

 

 

此外,也可使用Travis CI或Gitlab的CI來執行abaplint的自動檢查。具體能夠參考該文:《Automatic checking of your ABAP code in Github/Gitlab with CI and abaplint

應用範圍

abaplint支持多種代碼編輯器和代碼託管平臺,列表以下,

配置

abaplint支持不少檢查規則(而且在持續地更新中),能夠經過abaplint.json文件來控制各個檢查規則的啓用與關閉、設置某些具體的檢查參數。

abaplint-clean-code項目中包含了這些規則的介紹,和配置文件示例。第一次使用abaplint的用戶能夠以該項目中的配置文件示例做爲模板,按照本身的須要,結合規則介紹進行修改。

關於規則介紹部分,它不只給出了規則的效果,也參考sap的style guides給出了規則存在的具體緣由。

以其中一個設置爲例,

        "method_length": {
            "statements": 25,
            "ignoreTestClasses": false,
            "errorWhenEmpty": true,
            "reason": "https://github.com/SAP/styleguides/blob/master/clean-abap/CleanABAP.md#keep-methods-small"
        },

method_length是方法長度的配置項;statements的數量決定了方法的最大行數;ignoreTestClasses,忽略測試類,

errorWhenEmpty,對不含代碼的空方法報錯;reason,該設置的緣由。

(我的認爲25有點小,有時候容易致使淺模塊

相關網站

abaplint項目下還有一些實用網站,這裏介紹幾個我瞭解的。

playground.abaplint.org

一個在線編輯器,包含一個可編輯的report程序和一個可編輯的配置文件abaplint.json,能夠經過它試驗abaplint的效果。

syntax.abaplint.org

一個ABAP的語法樹網站,十分強大。以下圖,

 

包含ABAP中的全部語句、表達式和結構。

stats.abaplint.org

對一些開源項目的統計,包含項目的對象數量、文件數量、語句數量、方法長度、語句兼容性、對象類型、行數趨勢等信息的統計。能夠幫助開源開發者分析本身的項目。效果以下圖:

abaplint的意義

abaplint目前的流行度彷佛還不是很高(當前有62 star, 24 fork, 在abap標籤下分別排名第8和第10)。但我相信它是一個頗有意義ABAP開源項目,將來可能會對ABAP的生態產生深遠影響。

ABAP開發者一直以來都在SAP ABAP服務器上進行開發工做,代碼的分析、測試徹底在ABAP服務器上進行。複雜而笨重的SAP系統不是處處都有的,並且這些系統大可能是孤立的。這意味着,開發內容的分享十分不方便。雖然理論上能夠經過SAP系統工具對開發對象進行導入導出、代碼分析等工做,但在本質上,它們一般是爲了一個組織內部的分享而存在的。當一個素不相識的人在github發佈了一個新的開源項目時,其它人沒法得知這個項目曾經在ABAP服務器上進行過怎樣的檢查,這會影響信任的構建。abaplint獨立實現了本來只能在ABAP服務器上進行的檢查,若是一個項目的每次commit包含abaplint的檢查結果,每一個方法都有完整的單元測試,那麼人們對這個項目的信心將大大增長。信心的增長會促令人們將更多資源投入到開源項目中,從而促進社區的成長。

相關文章
相關標籤/搜索