1. 程式人生 > >Pycharm配置(二)

Pycharm配置(二)

編輯 plm 分享 期望 代碼檢查 warning 編寫 tegra activity

1、主題

這部分教程主要介紹如何創建一個Python工程並使其具有Pycharm的代碼風格。你將會看到Pycharm使你的源碼變得非常簡潔美觀,帶有合適的縮進、空格等等,因此Pycharm也是一款代碼質量管理的利器。
這部分教程並不會介紹如何使用Python進行編程,更多有關Python編程的知識請參照:Python編程
2、準備工作
在開始之前,請確認一下情況:

 (1)安裝了Pycharm2.7或更高版本的軟件

(2)已經新建了一個Python工程(File→New Project),詳情參照:Pycharm新建工程文件

  (3)已經在工程下添加了兩個目錄:src和test_dir(File→New or Alt+Insert),詳情參照:Pycharm新建工程文件

  (4)已經向工程目錄下添加了對應的Python文件(File→New or Alt+Insert),詳情參照:Pycharm新建工程文件

3、代碼報錯的高亮模式

  打開一個新建的Python文件進行編輯(F4),這個文件中默認有兩行代碼:作者姓名和工程名稱。之所以會出現這兩行代碼,是因為Python文件在創建時是基於文件模板進行創建的,因此會預定義這兩個變量。

  接下來輸入關鍵字class,當你開始輸入時,Pycharm的拼寫提示機制會立即列出候選項來幫助你完成代碼:
技術分享

(參照Pycharm拼寫提示來了解Pycharm更多關於拼寫提示的信息)

  這個紅色波浪線標記了下次代碼輸入的期望位置,在這種情況下,它是一個預輸入定義符。鍵入類名Solver,紅色波浪線將會移動到類名之後。如果你將術鼠標指針懸停在波浪線上,將會看到所提示的錯誤信息("Colon expected"),當然,此時位於右側滾動欄的紅色標誌也會給出相同的錯誤信息。技術分享

OK,輸入冒號,回車。根據Python代碼風格標準,需要定義下一個類聲明,當然此時我們可以通過輸入空格來取消它。

4、聚焦PEP8代碼風格檢查

  然而,在默認情況下這些警告提醒是不可見的,所以首先需要做的就是提升它們的優先級以進行顯示。單擊技術分享設置按鈕,然後在Settings/Preferences對話框中的 Inspections 頁面,鍵入PEP8來找到所有相關選項,在對應的下拉菜單中選中warning選項:技術分享

單擊應用,關閉對話框,返回源碼編輯界面。

5、詳解PEP8代碼風格

  現在Ptcharm已經能夠正常顯示它的代碼規範,確保你編寫的代碼格式的完整性。接下來當我們輸入下一條語句(例如def demo(self,a,b,c):),Pycharm將根據PEP8的代碼規範機制來報告當前存在的格式問題。技術分享

正如你所見到的那樣,Pycharm將其所支持的PEP8規範設置為默認的正規Python代碼格式標準。如果你打開inspections的列表,(Ctrl+Alt+S→Inspections),可以看到Pycharm在你的代碼中加載了pep8.py工具,用來精確定位你的代碼風格問題。

技術分享
6、代碼檢查以及相關設置

  順便說一下,如果你仔細觀察 Inspections page頁面中 inspection profile的缺省設置(如果你是第一次進行設置的話)會發現,Pycharm已經將所有的代碼規則用於當前的工程中了。

接下來我們對代碼檢查機制做兩方面的改動:

  (1)在測試腳本中,將拼寫錯誤標記為綠色

  (2)在說明文檔(註釋)中,將拼寫錯誤改為紅色提示

  接下來我們一一進行介紹

7、創建一個作用域

  首先我們需要創建兩個作用域用來進行兩個不同應用範圍的設置。單擊設置按鈕進入 Settings/Preferences對話框,打開Scopes頁面,單擊上方綠色的加號來創建一個局部類型的作用域:

技術分享

在Add New Scope對話框中,鍵入作用域名稱,然後在工程管理器(樹型結構)中選擇需要包含到當前作用域中的目錄:test_dir,註意此時的Pattern欄已經自動顯示加載路徑:

技術分享

重復上述步驟再新建一個Production作用域。

8、在新建的作用域中創建代碼檢查控制文件

  接下來,創建一份缺省代碼控制文件的拷貝文件(處於安全考慮):
技術分享

然後在對它進行命名,例如我們這裏命名為MyProjectProfile。這個新的配置文件是之前默認缺省配置文件的復制版,兩者的設置內容完全相同。

  接下來選中我們拷貝的代碼控制文件,定位到Spelling項進行相應改動。為了快速找到Spelling選項葉,只需在搜索欄中輸入Spel即可。

  然後通過單擊綠色的加號來添加我們之前新建的Test作用域,然後再次單擊添加Production作用域:技術分享在Test作用域中,代碼檢查的嚴格等級如圖中左側所示,Production作用域中有類似設置,不過所選擇的下拉列表中的安全等級不同:
技術分享

留意對話框中作用域名稱的字體顏色,如果為灰色則說明未做改動,若是藍色則說明已經更改了相關設置。

應用更改設置然後關閉對話框。

  此時,按照要求修改後的配置文件已經完成,名為MyProjectProfile,其在Test作用域和Production作用域中有不同的拼寫檢查設置。接下來我們將這個配置應用於對應代碼區域,在主程序菜單中選擇Code→Inspect Code,在對話框中指定已經定義好的作用域和配置文件:技術分享

當然我們需要操作兩次,因為有兩個定義域需要進行相關配置的更改,並且可以將相關的配置清單導出。

  比較一下這兩個作用域的拼寫檢查結果:技術分享

正如你所見,在Production作用域為紅色波浪線,在Test作用域為綠色波浪線。

9、錯誤提示的高亮代碼顯示

  除此之外,Pycharm還會根據配置文件控制,對當前的一些錯誤進行高亮顯示處理。

  舉個例子,如果你的拼寫檢查配置文件中包含"Unresolved references"這條檢查規則,同時你又使用了一條尚未進行import的符號,Pycharm就會用下劃線標出無法解釋的符號來提示你導入相關模塊:

技術分享

參考auto-import tutorial來完成相關模塊的導入工作

10、快速成型以及多次提示

  你是否已經註意到在代碼左端經常出現一個亮起的黃色或者紅色的燈泡然而你卻並不希望看到它?

11、源碼自動生成

  Pycharm提供了很多代碼自動生成機制,你可以參照product documentation中有關自動生成代碼的介紹:Auto-generating code,接下來我們探討一下Pycharm的主代碼生成機制。當然我們需要先將 Solver.py中已有的內容刪除,重新開始。

  首先,創建一個類實例:

技術分享

OK,Pycharm成功創建出了一個類:

技術分享
接下來我們向類中添加一個成員方法,為了達到這個目的,首先需要在類實例後面輸入一個點號,然後鍵入成員函數名稱。此時這個成員函數是未定義的,因此Pycharm會提示我們來創建一個:

技術分享
然後在函數體中手動輸入源碼,例如我們輸入一段計算二次方程判別式的程序,其中有一個函數sqrt()來自math模塊,但目前尚未被包含,我們繼續輸入,看Pycharm如何解決這個問題:

技術分享
因此,我們源碼最終如下:
技術分享

然而,代碼缺少一些重要的邏輯分析。我們需要分析判別式結果d,如果它是零或者正數,則正常求解方程的根;如果其為負數,我們需要拋出一個異常,Pycharm會如何幫助我們完成這個任務?

  讓我們用if語句來包含一塊代碼,即選中當d為非負數時需要執行的語句:

技術分享

然後按下Ctrl+Alt+T,或者單擊主菜單中的Code→Surround With選項,Pycharm將會彈出一個下拉菜單,顯示當前情況下可用的範圍控制結構:

技術分享
選擇if選項,Pycharm會自動添加if True:語句到選中的行:

技術分享
這裏我們並不對布爾表達式做過多解釋,根據需要我們直接將True替換成d >= 0,接下裏將光標定位到最後一行,回車,光標將會出現在下一行,和if保持相同的縮進,輸入else:,然後觀察Pycharm給出的預輸入提示:

技術分享
再次回車,移動光標,這裏我們在Pycharm強大的拼寫提示下輸入拋出異常的代碼:
技術分享

12、代碼格式修改

  再次觀察Solver.py文件會發現,右邊滾動槽中顯示了很多黃色標記,將鼠標懸停在上邊,Pycharm將會顯示對應的代碼格式問題:

技術分享

好在這些信息都是警告信息,並不會影響到代碼的運行結果,但是格式問題實在是太多了,那麽如何把代碼格式調整得更為美觀規範呢?

  這裏所用到的就是code reformatting了,不妨嘗試一下。

  為了調用格式化操作,只需按下Ctrl+Alt+L快捷鍵,或者在主菜單中單擊Code→Reformat Code,此時我們驚奇發現所有的PEP8類格式問題都已經消除。

  當然我們可以自定義格式化標準,打開 code style settings對話框,選擇指定語言(Python),進行必要的更改即可:

技術分享

13、添加註釋文檔

  代碼格式調整完之後,左側仍然留有一些黃色的標誌位,鼠標懸停後提示類似於"Missing docstring"的警告信息,代碼前方亮著的小黃燈泡也提示同樣的信息:

技術分享

解決方法也很簡單,在彈出的下拉菜單中選擇Insert docstringPycharm就會自動添加一段帶格式的文本作為註釋文檔:
技術分享

註意這裏有若幹中註釋文檔的格式,你可以在Python Integrated Tools頁面中設置當前需要插入哪種格式的註釋文檔,例如Epytext、plain text等

14、輸入註釋

  註釋文檔用以解釋函數的參數、返回值、變量的類型及含義。舉個例子,我們需要控制demo()的輸入參數類型,我們就需要在註釋文檔中添加相應的註釋信息:

技術分享

至此,主函數的註釋文檔完成。

  接下來在函數調用的過程中,若出現參數類型不匹配的情況,Pycharm會依據註釋文檔來給出響應的錯誤提示信息:技術分享

Pycharm配置(二)