使用 Pycco 生成代碼文檔

      網友投稿 912 2022-05-29

      目錄

      項目設置

      生成一些文檔

      生成的文檔

      Make It Fancy

      為整個項目自動生成文檔

      非 Python 文件的文檔

      項目級文檔如何?

      Regeneration

      作為開發人員,我們喜歡編寫代碼,盡管當時對我們來說很有意義,但我們必須考慮我們的受眾。有人必須閱讀、使用和/或維護所述代碼。三個月后,它可能是另一個開發人員、客戶或我們未來的自己。

      即使是像 Python 這樣優美的語言有時也很難理解。因此,作為非常關心我們的程序員同事(或者更有可能是因為我們的老板希望我們這樣做)的優秀編程公民,我們應該編寫一些文檔。

      但是有規則:

      編寫文檔不能爛(即我們不能使用 MS Word)。

      編寫文檔必須盡可能輕松。

      編寫文檔不能要求我們離開我們最喜歡的文本編輯器/IDE。

      編寫文檔不得要求我們對最終演示文稿進行任何格式化或完全關心。

      這就是Pycco 的用武之地:

      “Pycco”是 Docco 的 Python 端口:原始的快速而骯臟的、百行長的、文學編程風格的文檔生成器。它生成 HTML,在代碼旁邊顯示您的注釋。注釋通過 Markdown 和 SmartyPants 傳遞,而代碼通過 Pygments 傳遞以進行語法高亮顯示。

      所以基本上這意味著 Pycco 可以為我們自動生成看起來不錯的代碼文檔。Pycco 還遵守上述代碼文檔的四項規則。那么什么是不愛呢?讓我們來看看如何使用它的一些示例。

      對于本文,我從一個用Django編寫的簡單 TODO 應用程序開始,您可以從repo 中獲取它。該應用程序允許用戶將項目添加到列表中并在完成后刪除它們。這個應用程序可能不會為我贏得 Webby,但它應該滿足本文的目的。

      請注意,repo 中的文件已經包含最終代碼,已經記錄在案。不過,您仍然可以創建單獨的文檔文件,所以請隨意克隆 repo 并跟隨我。

      項目設置

      克隆回購:

      $ git clone git@github.com:mjhea0/django-todo.git

      設置虛擬環境:

      $ cd django-todo $ virtualenv --no-site-packages venv $ source venv/bin/activate

      安裝要求:

      $ pip install -r requirements.txt

      同步數據庫:

      $ cd todo $ python manage.py syncdb

      生成一些文檔

      入門很簡單:

      $ pip install pycco

      然后要運行它,您可以使用如下命令:

      $ pycco todos/*.py

      請注意,您可以通過這種方式指定單個文件或文件目錄。在我們的 TODO 存儲庫上執行上述命令會產生以下結果:

      pycco = todo/todos/__init__.py -> docs/__init__.html pycco = todo/todos/models.py -> docs/models.html pycco = todo/todos/tests.py -> docs/tests.html pycco = todo/todos/views.py -> docs/views.html

      換句話說,它生成 html 文件(每個 python 文件一個)并將它們全部轉儲到“docs”目錄中。對于較大的項目,您可能需要使用 -p 選項來保留原始文件路徑。

      例如:

      pyccoo todo/todos/*.py -p

      會產生:

      pycco = todo/todos/__init__.py -> docs/todo/todos/__init__.html pycco = todo/todos/models.py -> docs/todo/todos/models.html pycco = todo/todos/tests.py -> docs/todo/todos/tests.html pycco = todo/todos/views.py -> docs/todo/todos/views.html

      請注意,它已將 todos 應用程序的文檔存儲在“docs/todo/todos”子文件夾下。通過這樣做,瀏覽大型項目的文檔會容易得多,因為文檔結構將與代碼結構相匹配。

      生成的文檔

      pycco 的目的是生成一個兩列文檔,左側帶有注釋,右側與后續代碼對齊。因此,在我們還沒有注釋的models.py類上調用 pycco將生成一個如下所示的頁面:

      您會注意到左側的列(應該是注釋的地方)是空白的,而右側則顯示了代碼。我們可以通過添加docstring來更改models.py以通過將以下代碼添加到models.py來獲得更有趣的文檔。

      from django.db import models # === Models for Todos app === class ListItem(models.Model): """ The ListItem class defines the main storage point for todos. Each todo has two fields: text - stores the text of the todo is_visible - used to control if the todo is displayed on screen """ text = models.CharField(max_length=300) is_visible = models.BooleanField()

      使用上面的代碼片段,pycco 找到了以下行:

      # === Models for Todos app ===

      然后在文檔中生成一個標題。

      文檔字符串:

      """ The ListItem class defines the main storage point for todos. Each todo has two fields: text - stores the text of the todo is_visible - used to control if the todo is displayed on screen """

      Pycco 使用文檔字符串來生成文檔。再次運行 pycco 后的最終結果將是:

      如您所見,左側的文檔與右側的代碼很好地對齊。這使得查看代碼和了解正在發生的事情變得非常容易。

      Pycco 還識別代碼中以 a 開頭的單行注釋#以生成文檔。

      Make It Fancy

      但 pycco 并不止于此。它還允許使用 Markdown 自定義注釋格式。作為示例,讓我們在views.py文件中添加一些注釋。首先,讓我們在views.py的頂部放置一個文檔字符串:

      """ All the views for our todos application Currently we support the following 3 views: 1. **Home** - The main view for Todos 2. **Delete** - called to delete a todo 3. **Add** - called to add a new todo """ from django.http import HttpResponse from django.shortcuts import render_to_response from django.template import RequestContext from todos.models import ListItem def home(request): items = ListItem.objects.filter(is_visible=True) return render_to_response('home.html', {'items': items}, context_instance = RequestContext(request)) # ... code omitted for brevity ...

      這將生成如下報告:

      我們還可以在文件之間甚至在同一文件內添加鏈接。可以使用[[filename.py]]或添加鏈接[[filename.py#section]],它們將呈現為帶有文件名的鏈接。讓我們更新views.py以在列表中每個項目的末尾添加一些鏈接:

      """ All the views for our todos application Currently we support the following 3 views: 1. **Home** - The main view for Todos (jump to section in [[views.py#home]] ) 2. **Delete** - called to delete a todo ( jump to section in [[views.py#delete]] ) 3. **Add** - called to add a new todo (jump to section in [[views.py#add]]) """ from django.http import HttpResponse from django.shortcuts import render_to_response from django.template import RequestContext # defined in [[models.py]] from todos.models import ListItem # === home === def home(request): items = ListItem.objects.filter(is_visible=True) return render_to_response('home.html', {'items': items}, context_instance = RequestContext(request)) # === delete === def delete(request): # ... code omitted for brevity ...

      如您所知,建立鏈接有兩個組成部分。首先,我們必須在我們的文檔中定義一個部分。您可以看到我們已經使用代碼定義了 home 部分# === home ===。創建部分后,我們可以使用代碼鏈接到它[[views.py#home]]。我們還插入了一個指向模型文檔文件的鏈接,代碼如下:

      # defined in [[models.py]]

      最終結果是如下所示的文檔:

      請記住,因為 pycco 允許使用標記語法,您還可以使用完整的 html。所以發瘋:)

      為整個項目自動生成文檔

      如何使用 pycco 為整個項目生成文檔可能并不明顯,但如果您使用 bash 或 zsh 或任何支持全局的 sh,它實際上非常簡單,您只需運行如下命令:

      使用 Pycco 生成代碼文檔

      $ pycco todo/**/*.py -p

      這將為.pytodo的任何/所有子目錄中的所有文件生成文檔。如果你在 Windows 上,你應該可以用 cygwin、git bash 或 power sh 來做到這一點。

      非 Python 文件的文檔

      Pycco 還支持其他幾種文件類型,這對于經常使用一種以上文件類型的 Web 項目很有幫助。在撰寫本文時,受支持文件的完整列表是:

      .coffee?- CoffeeScript

      .pl?- Perl

      .sql?- SQL

      .c?- C

      .cpp?- C++

      .js?- JavaScript

      .rb?- Ruby

      .py?- Python

      .scm?- Scheme

      .lua?- Lua

      .erl?- Erlang

      .tcl?- Tcl

      .hs?- Haskell

      這應該涵蓋您的文檔需求。所以只要記住寫一些注釋,讓 pycco 輕松地為您生成漂亮的代碼文檔。

      項目級文檔如何?

      通常項目除了代碼文檔之外還有其他要求——比如自述文件、安裝文檔、部署文檔等。使用 pycco 生成該文檔也很好,這樣我們就可以始終堅持使用一個工具。好吧,此時,pycco 將僅處理具有上述列表中擴展名的文件。但是沒有什么可以阻止您創建readme.py或installation.py文件并使用 pycco 生成文檔。您所要做的就是將您的文檔放在一個文檔字符串中,然后 pycco 將生成它并為您提供完整的降價支持。所以想象一下,如果在你的項目目錄的底部你有一個名為的文件夾project_docs,其中包含:

      install_docs.py

      project_readme.py

      deployment.py

      然后你可以運行以下命令:

      $ pycco project_docs/*.py -p

      這會在您的“docs/project_docs 目錄”中添加適當的 html 文件。當然,這可能有點小技巧,但它確實允許您使用一種工具為您的項目生成所有文檔。

      Regeneration

      Pycco 還有一個絕招:自動重新生成文檔。換句話說,您可以讓 pycco 監視您的源文件,并在每次保存源文件時自動重新生成必要的文檔。如果您嘗試在評論中添加一些自定義降價/html 并希望確保其正確呈現,這將非常有用。隨著自動文檔重新生成運行,您只需進行更改、保存文件并刷新瀏覽器,無需在其間重新運行 pycco 命令。為此,您需要安裝看門狗:

      $ pip install watchdog

      Watchdog 是監聽文件變化的模塊。因此,一旦安裝完成,只需執行如下命令:

      $ pycco todo/**/*.py -p --watch

      它將運行 pycco 并保持運行,直到您用Ctrl+C停止它為止。只要它正在運行,它就會重新生成有關源文件每次更改的文檔。簡單的文檔如何?

      Pycoo 是迄今為止我遇到的最簡單、最直接的 Python 代碼文檔工具。

      HTML Python

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:利用flasgger生成FlaskAPI文檔
      下一篇:docsify生成文檔網站
      相關文章
      亚洲国产精品激情在线观看| 亚洲第一区二区快射影院| 亚洲国产AV一区二区三区四区| 亚洲国产成人资源在线软件| 亚洲一区二区影院| 午夜亚洲www湿好大| 久久亚洲AV无码精品色午夜麻| 亚洲熟妇无码乱子AV电影| 亚洲午夜爱爱香蕉片| 亚洲国产一成久久精品国产成人综合| 国产精品亚洲片在线花蝴蝶| 精品国产亚洲一区二区三区在线观看| 亚洲精品GV天堂无码男同| 亚洲精品无码人妻无码| 亚洲变态另类一区二区三区| 亚洲变态另类一区二区三区| 国产成人综合久久精品亚洲| 亚洲av无码成人精品区在线播放 | 亚洲AV无码乱码在线观看| 国产亚洲高清在线精品不卡| 亚洲AV无码之日韩精品| 亚洲中文字幕伊人久久无码| 最新国产AV无码专区亚洲 | 亚洲成AV人在线播放无码 | 日本亚洲中午字幕乱码| 亚洲va中文字幕无码| 久久久久久久亚洲精品| 国产亚洲av片在线观看16女人| 亚洲gv白嫩小受在线观看| 在线观看亚洲人成网站| 亚洲国产成+人+综合| 亚洲熟女www一区二区三区| 色综合久久精品亚洲国产| 日韩精品电影一区亚洲| 国产成人亚洲精品91专区手机| 亚洲精品无码午夜福利中文字幕| 国产亚洲精久久久久久无码| 日韩精品一区二区亚洲AV观看| 亚洲国产亚洲片在线观看播放| 亚洲字幕AV一区二区三区四区| 亚洲AV无码国产精品永久一区|