mORMot and Open Source friends SynProject Tutorial (SynProject教程)

海利鸟發表於2024-06-10

mORMot and Open Source friends SynProject Tutorial--(SynProject 教程)

第一步

本頁介紹SynProject的一些典型用法。

我們將為mORMot框架本身建立一個原始碼儲存庫和相關的文件。

您要求文件,我們將透過SynProject自動生成它!

我們需要什麼

因此,我們在硬碟上的D:\Dev\Lib資料夾中擁有所有mORMot框架原始碼檔案(主單元在D:\Dev\Lib\SQlite3,Synopse公共單元在D:\Dev\Lib)。

您可以直接從SynProject.zip下載二進位制可執行檔案。

將SynProject.exe檔案解壓縮到硬碟上的一個目錄中。安裝完成。

建立一個新專案--版本管理

啟動SynProject。此時它會顯示一個警告訊息:

啟動畫面

您從未使用過SynProject,因此您沒有當前專案可以工作。SynProject檢測到了這一點,並要求建立一個新專案。

關於“專案”的說明

  • 請注意,使用SynProject,您可以同時處理多個專案。一個“專案”是一個軟體實體,主要遵循市場和預算方法。您的公司有這樣的“專案”。如果您不知道,請詢問您的專案經理。
  • 一個“專案”儲存在.dvs檔案中。實際上,這個檔案是一個有效的.zip歸檔檔案,在其根目錄下包含一個包含所有與專案相關引數(專案描述和目錄,以及所有提交列表)的“commit”文字檔案,然後是專案的所有原始檔,這些原始檔位於與原始碼樹的實際佈局相對應的子資料夾中(實際上,SynProject以專有但非常高效的二進位制格式儲存原始碼檔案的“增量”或“差異”,以原始碼檔名和提交號作為副檔名——十六進位制編碼)。
  • 在專案中,您可能擁有文件本身。正如在SynProject螢幕截圖中所述,文件是一個副檔名為.pro的單個文字檔案。

點選“是”,將顯示一個嚮導螢幕。

嚮導第1頁

根據下一張螢幕截圖填寫欄位——這些欄位是專案的主要引數(將儲存在.dvs專案檔案內的“commit”檔案中):

請注意,這些引數可以從SynProject的主使用者介面更改。

以下是這些引數/欄位的一些說明:

  1. “根目錄”是一個主要引數。所有檔案都應該可以從該位置的子目錄中檢索。
  2. 由於在文件相關檔案欄位中輸入了“Documents”,因此文件檔案(例如純文字檔案.pro)將在此目錄內找到。
  3. 對於同一產品,您可能有多種版本:一個專案被投票、開發和釋出,然後另一個專案將對初始專案進行更新。產品相同,但專案隨每次釋出而演變。在您的硬碟上,每個版本或專案都將包含在子目錄中,如ProductName\Release Name。
  4. 目錄佈局是根據指定的引數建立的(參見下面的第2步):例如,SQLite3.pro檔案將在D:\Dev\Documents\SQLite3\Synopse SQLite3 Framework\Synopse SQLite3 Framework.pro中建立。
  5. 我們輸入了設計輸入(DI)的第一列表,這些列表將在專案的生命週期中演變。我們只放了兩個設計輸入的標題和一些用於引用它們的數值。您的專案經理或營銷人員可能已經編寫了這樣的專案高階描述,並得到了您的CEO的批准:在這裡使用官方文件中的編號。
  6. 由於我們已選中“SWRS有自己的子項”核取方塊,因此我們將能夠將初始DI細分為更詳細的軟體規範。這有時會發生,因為營銷人員可能對軟體程式設計知之甚少……因此,在這裡您將能夠填補營銷夢想與現實之間的差距……
  7. 所有設計輸入都可以在專案生命週期中演變:SynProject將能夠跟蹤這些更改,整個專案的文件將始終保持同步和最新,即使營銷決策發生變化……

然後點選“下一步”,並在必要時確認(點選“是”)。

現在,您的專案的詳細布局引數顯示在嚮導的第二頁上:

嚮導第2頁

預設情況下,引數(尤其是資料夾名稱)用前一頁欄位填充。現在您可以自定義這些欄位的內容。

  • 在文件資料夾內建立了一個名為“GG”的目錄,用於儲存臨時GraphViz生成的圖表:因此,這個目錄名將被忽略;
  • 您必須指定哪些副檔名要新增到您的專案中——請注意,與其他CVS不同,SynProject會一次性新增所有這些檔案:在我們的專案中,我們不需要基於檔案的提交功能,但如果有必要可以新增——如果您需要它,請為這個GPL專案做出貢獻!# .scr檔案包含所有與跟蹤器相關的問題;目前SynProject中沒有包含跟蹤器,因為我們使用PVCS來實現這個目的;因此,SynProject可以直接與PVCS互動,並從PVCS資料庫中直接檢索任何跟蹤器條目——我們可能會在不久的將來新增與fossil的介面。
  • .man檔案包含專案手冊:它只是一個單一的檔案,將建立一個唯一的檔案——您最好使用主要的.pro文件,並向其中新增一個特定部分。
  • .pro檔案是著名的主文件文字檔案。
  • 由於在前面的嚮導步驟中選中了“SWRS有自己的子項”核取方塊,因此我們可以在這裡自定義SWRS項。我們將暫時保留它,根據DI項的定義。
  • 然後可以設定提交模組:只需點選欄位旁邊的“...”按鈕,即可彈出修改螢幕。第一個提交模組包含預設的原始碼(我們將其更改為指向Lib\SQLite3);然後第二個提交模組指向與產品相關的文件(即.scr和.man檔案);然後是專案/釋出相關的文件(即.pro檔案)。如有必要,您可以在目錄樹中新增其他提交模組。請注意,我們不會包含整個D:\Lib資料夾,因為它們不都是SQLite3框架本身的一部分。它們將由另一個專案跟進。

當您點選“儲存更改”按鈕,並透過“是”按鈕確認後,所有必要的資料夾和檔案都將被建立。

對以下通知視窗回答“是”:

image

對以下通知視窗要求建立的目錄回答“是”:

image

以及對這一個回答“是”:

然後,系統將要求您連線到PVCS跟蹤器。由於我們現在不使用它,請點選“取消”:

image

透過“是”確認與釋出相關的目錄建立:

img

現在,SynProject已經建立了所有必要的檔案和目錄。

我們的第一個提交

SynProject的主螢幕將出現,上面顯示剛剛建立的“Synopse SQLite3框架”專案,如視窗的主要標題欄所述:

image

目前它是空的。

我們將透過按下“提交”按鈕進行第一次提交。它會顯示以下視窗:

image

輸入提交描述和下面的註釋;
您可以將此提交與跟蹤器條目(在.scr檔案中)相關聯——請注意“新增到PVCS作為模組”核取方塊,它允許您將相應的提交新增到所選的PVCS跟蹤器條目中。
可以指定此提交的範圍:在這裡我們選擇所有資料夾(主專案原始碼、產品資料夾、釋出資料夾)。
當按下“提交所選”按鈕時(點選“提交全部”應該產生相同的結果),所有相應的原始碼檔案都將新增到儲存庫中。將出現一個日誌螢幕,詳細列出所有修改。日誌螢幕的內容大致如下:

First commit
------------
 0 file(s) deleted
 
 61 file(s) modified/added
    Lib\SQLite3\c.bat added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\Samples\01 - In Memory ORM\Project01.dof added, on 6/29/2010 6:51:22 PM
    Lib\SQLite3\Samples\01 - In Memory ORM\Project01.dpr added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\Samples\01 - In Memory ORM\Project01.res added, on 6/29/2010 6:51:06 PM
    Lib\SQLite3\Samples\01 - In Memory ORM\SampleData.pas added, on 6/29/2010 6:51:20 PM
    Lib\SQLite3\Samples\01 - In Memory ORM\Unit1.dfm added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\Samples\01 - In Memory ORM\Unit1.pas added, on 6/29/2010 6:51:30 PM
    Lib\SQLite3\Samples\02 - Embedded SQLite3 ORM\Project02.dof added, on 6/29/2010 6:53:52 PM
    Lib\SQLite3\Samples\02 - Embedded SQLite3 ORM\Project02.dpr added, on 6/29/2010 6:53:52 PM
    Lib\SQLite3\Samples\02 - Embedded SQLite3 ORM\Project02.res added, on 6/29/2010 6:52:44 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Client.dof added, on 6/29/2010 6:54:32 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Client.dpr added, on 6/29/2010 6:54:22 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Client.res added, on 6/29/2010 6:54:02 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Server.dof added, on 6/29/2010 6:56:08 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Server.dpr added, on 6/29/2010 6:56:00 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Project03Server.res added, on 6/29/2010 6:55:58 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Unit2.dfm added, on 1/24/2010 5:33:26 PM
    Lib\SQLite3\Samples\03 - NamedPipe Client-Server\Unit2.pas added, on 6/29/2010 6:56:06 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Client.dof added, on 6/29/2010 6:56:28 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Client.dpr added, on 6/29/2010 6:56:24 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Client.res added, on 6/29/2010 6:56:22 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Server.dof added, on 6/29/2010 6:57:12 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Server.dpr added, on 6/29/2010 6:56:52 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Project04Server.res added, on 6/29/2010 6:56:50 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Unit2.dfm added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\Samples\04 - HTTP Client-Server\Unit2.pas added, on 6/29/2010 6:58:32 PM
    Lib\SQLite3\Samples\05 - Report created from code\TestSQLite3Pages.dpr added, on 6/30/2010 6:16:24 PM
    Lib\SQLite3\Samples\05 - Report created from code\Unit1.dfm added, on 6/30/2010 7:07:06 PM
    Lib\SQLite3\Samples\05 - Report created from code\Unit1.pas added, on 6/30/2010 7:04:40 PM
    Lib\SQLite3\ServiceTestForm.dfm added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\ServiceTestForm.pas added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\ServiceTestSQL3.dof added, on 7/10/2010 6:48:08 PM
    Lib\SQLite3\ServiceTestSQL3.dpr added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\ServiceTestSQL3.res added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\sqlite3.c added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3.pas added, on 7/5/2010 6:53:14 PM
    Lib\SQLite3\SQLite3BtnOk.bmp added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3Commons.pas added, on 7/12/2010 10:54:16 AM
    Lib\SQLite3\SQLite3FastCgiServer.pas added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3HttpClient.pas added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3HttpServer.pas added, on 7/5/2010 5:43:20 PM
    Lib\SQLite3\SQLite3i18n.pas added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3Pages.pas added, on 7/10/2010 6:51:22 PM
    Lib\SQLite3\SQLite3Service.pas added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3ToolBar.pas added, on 7/6/2010 9:00:06 PM
    Lib\SQLite3\SQLite3UI.pas added, on 7/6/2010 9:00:06 PM
    Lib\SQLite3\SQLite3UILogin.dfm added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3UILogin.pas added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3UILogin.png added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3UILogin.rc added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3UILogin.RES added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3UIOptions.dfm added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3UIOptions.pas added, on 7/6/2010 9:00:06 PM
    Lib\SQLite3\SQLite3UIQuery.dfm added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\SQLite3UIQuery.pas added, on 6/27/2010 5:24:14 PM
    Lib\SQLite3\TestSQL3.cfg added, on 7/4/2010 3:30:32 PM
    Lib\SQLite3\TestSQL3.dof added, on 7/5/2010 5:56:00 PM
    Lib\SQLite3\TestSQL3.dpr added, on 7/5/2010 5:56:00 PM
    Lib\SQLite3\TestSQL3.dproj added, on 7/5/2010 4:54:26 PM
    Documents\SQLite3\Common\SQLite3 Framework.scr added, on 7/12/2010 1:18:14 PM
    Documents\SQLite3\Synopse SQLite3 Framework\Synopse SQLite3 Framework.pro added, on 7/12/2010 1:19:46 PM
 
 "First commit" Commit performed in 0.4 s.
 
 -=- Process complete: press Escape or Enter to close the form -=-

請注意,所有Delphi原始碼檔案都已被新增,以及來自相關文件資料夾的.scr和.pro檔案。

使用Esc鍵關閉日誌螢幕。

現在主螢幕包含了提交資訊。只需點選提交行,所有對應的檔案就會出現在下一列中。雙擊任何檔案可以直接在SynProject中檢視其內容。

本地版本

製作文件

預設情況下,Synopse SQLite3 Framework.pro檔案已被建立,並根據基本模板填寫了內容。

整個文件過程遵循完整的覆蓋範圍,符合ISO/IEC最佳實踐:

img

如果上述佈局不能滿足您的需求,您可以向上述步驟中新增自己的文件或要求。或者,您也可以僅使用其中的一部分,例如SAD或測試。但是,當整個文件集都在工具內維護時,SynProject的主要優勢將變得顯而易見。

從SynProject的主螢幕中,點選“Docs”按鈕(帶有Word圖示的那個),或按F2鍵以顯示主要發行版文件編輯器:

image

提示:您還可以啟動工具,並指定.pro檔名作為命令列引數,以繞過整個.dvs/版本控制功能。也就是說,如果您將.pro副檔名與SynProject.exe相關聯,只需雙擊.pro檔案即可開啟任何文件。

現在我們將對檔案內容進行一些更改。模板目前相當基礎……但更新文件很容易。

文件檔案的結構類似於標準的.ini檔案,即包含一些[節]:

一些節是SynProject必需的,如[People]、[Project]、[DILayout]或[Pictures]。
一些節是相應文件的主要引數,如[DI]用於設計輸入,[RK]用於FMEA/系統級風險評估,[SRS]用於SRS/SWRS,即軟體需求規範,[Risk]用於與DI相關的風險評估,[SAD]用於軟體架構文件(及其相關的[SAD-Source]和[SAD-modules]節),[SDD]用於軟體設計文件,[VV]用於軟體驗證和驗證計劃,[Test]用於測試協議,[SCRS]用於軟體更改請求彙總表,以及[Release]用於發行說明。這些節將具有子節,根據初始[DILayout]內容或[SRS]的子節進行編號。例如,嚮導為您建立了[DI-1.1]、[DI-1.2]、[DI-2.1]和[DI-2.2]節,以及相應的[SRS-*]節。
每個[節]首先以與節相關的引數開始,作為頭部以Name=Value對的形式儲存。當出現空行或以:開頭的標題時,頭部結束。

為了瀏覽文件內容和所有這些節,您可以:

  • 點選編輯器最左側列中的任何項:它將僅顯示[節]的內容,右側為頭部(作為Name=Value對),左側為主體內容,如下面的螢幕截圖所示:

img

  • 點選編輯器最左側列中的第一個項(名為"* Whole file"的那個)以一次顯示整個檔案內容:這是處理文件的最有用方式。
  • 在* Whole file模式下,您可以左鍵點選螢幕上出現的第二個列表中的任何項以轉到該節。
  • 在* Whole file模式下,您可以右鍵點選螢幕上出現的第二個列表中的任何項以彈出選單,並瀏覽所有節和子節以到達您選擇的節。
  • 按F10鍵以顯示所有文件標題的列表(請注意,在此螢幕上,在鍵盤上鍵入將搜尋內容)。

現在我們將點選向導按鈕(位於“floppy/save”按鈕和“Word”按鈕之間)以建立必要的設計輸入內容。

main_screen

請注意,嚮導能夠修改文件的大部分內容。特別是,大多數節的頭部可以從使用者介面上的欄位輕鬆編輯,這對您來說可能很方便。

以下是文件嚮導的主螢幕:

只需點選您想要訪問的頁面。我們將點選“3 - 設計輸入詳情”,然後更新設計輸入值。點選左側列表中的一個DI項,然後更改右側欄位的內容,再點選另一個DI項,並確認儲存更改。

“風險評估”需要填寫一些值。請注意,我們將在關聯的請求和風險理由中填寫“初始釋出”,因為這是專案的首次釋出。

以下螢幕內容:

following_screen

將被嚮導轉換為以下文件值:

[DI-1.1]
Risk=1,1,3,Arnaud Bouchez,Initial release
Request=Initial release
Ident=The framework must be Client/Server oriented

;該框架必須是客戶端/伺服器導向的

解析原始碼

現在,我們將設定SAD(軟體架構文件)引數,這將允許解析原始碼並從中檢索有用資訊。

從嚮導中,我們將點選“13 - 軟體架構模組”頁面。然後點選第一個模組項(即“SAD-Main”),透過點選“是”確認其建立。接著,我們為這個模組輸入一個顯示名稱和一個版本號。我們在[SAD]部分輸入了“DefaultPath=D:\Dev”作為引數。因此,我們只需在“源路徑”欄位中輸入“Lib\SQLite3”。我們將輸入“TestSQL3.dpr”作為主原始碼檔案:此檔名將被解析,所有使用的單元將被新增到主儲存庫中。

我們需要透過點選“SAD-Main”項來儲存此項的更改,以便啟用“包含路徑”和其他欄位。我們只在包含路徑中輸入“Lib;Lib\SQLite3”,以便所有常見的Synopse庫單元(如SynCommons或SynPDF)將與庫一起被解析。

該模組的頁面將如下所示:

模組的頁面

然後,我們強制SynProject解析所有原始碼。從編輯器的主工具欄中,我們點選“Word”按鈕,然後選擇“SAD”文件,再點選名為“再次解析所有原始碼”的特殊命令。

Parse_all_source_code_again

請注意,原始碼將被解析(速度非常快),並且SynProject將建立兩個檔案:

  • 在D:\Dev\Documents\SQLite3\Synopse SQLite3 Framework目錄下的Synopse SQLite3 Framework.sad檔案,包含所有解析結果,即註釋和函式/類的宣告。它只是一個與.zip相容的歸檔檔案,每個單元一個檔案,包含PasDoc類的資料流和壓縮資料。
  • 在C:\Users\UserName\Documents\Synopse SQLite3 Framework\目錄下的SAD.log檔案,即生成的所有Word(.doc)文件所在的目錄。這個SAD.log檔案包含原始碼解析的日誌檔案。例如,它將包含我們SQLite3框架的日誌。
7/12/2010 2:27:44 PM
 Info[0]:    Cache file = D:\Dev\Documents\SQLite3\Synopse SQLite3 Framework\Synopse SQLite3 Framework.sad
 Info[0]:    #&91;SAD].Source = Main FillUnits(SAD-Main) -> TestSQL3.dpr
 Info[0]:    DefaultPath = D:\DEV Info[0]:    IncludePath = Lib;Lib\SQLite3
 Info[0]:    OutdatedCacheAutoRecreate is ON
 Info[2]:    Now parsing file Lib\SQLite3\TestSQL3.dpr...
 Info[2]:    Now parsing file Lib\SynCrtSock.pas...
 Info[2]:    Now parsing file Lib\SynCommons.pas...
 Info[2]:    Now parsing file Lib\SQLite3\SQLite3.pas...
 Info[2]:    Now parsing file Lib\SQLite3\SQLite3Commons.pas...
 Info[2]:    Now parsing file Lib\SQLite3\SQLite3FastCgiServer.pas...
 Info[2]:    Now parsing file Lib\SQLite3\SQLite3HttpClient.pas...
 Info[2]:    Now parsing file Lib\SQLite3\SQLite3HttpServer.pas...
 Info[2]:    Now parsing file Lib\SynZip.pas...
 Info[2]:    Now parsing file Lib\SQLite3\SQLite3i18n.pas...
 Info[2]:    Now parsing file Lib\SQLite3\SQLite3Service.pas...
 Info[2]:    Now parsing file Lib\SynSelfTests.pas...
 Info[2]:    Now parsing file Lib\SynCrypto.pas...
 Info[2]:    Now parsing file Lib\SynWinSock.pas...
 Info[2]:    Now parsing file Lib\SynPdf.pas...
 Info[2]:    Write new data to cache

 Info[2]:    Files not found during process:
Classes.pas,ComCtrls.pas,Contnrs.pas,Controls.pas,ExtCtrls.pas,FastMM4.pas,Forms.pas,Graphics.pas,LibC.pas,Menus.pas,Messages.pas,StdCtrls.pas,SysUtils.pas,Types.pas,UxTheme.pas,Windows.pas,WinSVC.pas

然後,我們將從原始碼建立所有圖表,透過從SAD文件中選擇以下私有選單來實現:

image

在Vista或Windows 7下,或者在Windows XP系統下如果您不是以管理員身份登入計算機,您首次嘗試生成圖表時可能會收到一個錯誤訊息。這是因為內部GraphViz引擎需要向系統註冊一次。要解決這個問題,您可以執行螢幕上指定的命令列命令,或者以管理員身份執行SynProject.exe一次(右鍵點選SynProject.exe,然後選擇“以管理員身份執行”),然後以管理員身份建立一些圖表。之後,您可以退出SynProject,並以當前使用者許可權再次執行它,這時生成圖表應該不會有問題了。

然後,我們直接點選SAD/SAD選單項,軟體架構文件(作為.rtf檔案)將被建立。接著,這個.rtf檔案會使用Word軟體本身轉換為原生的Word文件,然後開啟的就是生成的Word文件。您還可以選擇“SAD pdf”選項來直接渲染一個.pdf檔案(這要求您的計算機上安裝有Office 2007或更高版本),而無需開啟原始的Word文件——如果文件包含大量資料,直接開啟可能會很慢。

請注意,SynProject建立.rtf檔案的速度非常快,但大部分時間都花在了Word軟體上,用於從.rtf格式轉換為原生的.doc格式,特別是如果文件中包含大量圖表和超連結的話。不過,您可以使用SynProject建立超過1000頁的Word文件,而不會遇到任何問題。雖然Word在處理大量資料時可能會執行緩慢,但SynProject本身不會因為資料量太大而出現問題。

您可以從sampledoc.zip直接下載一個由SynProject生成的示例Word文件。

文件格式

正如您可能已經觀察到的,.pro檔案內容中使用的格式非常容易遵循。

它被分為括號內的部分(如[DI]),每個部分包含一個頭部(以Name=Value對的形式)和一個部分主體(通常用於生成文件的主體內容)。

您可以在任何您想要的地方新增註釋,只需在任何行的開頭加上一個分號(;)。

您可以在文字中使用RTF編碼:{\i 表示斜體},{\b 表示粗體},{\ul 表示下劃線},{\f1 表示Courier/等寬字型}。編輯器的工具欄上有一些對應的按鈕:只需選擇一些文字,然後點選這些按鈕(或按Ctrl+I、Ctrl+B、Ctrl+U、Ctrl+0鍵),即可使用相應的RTF屬性格式化所選文字。您可以看到,SynProject的整合編輯器瞭解這些快捷鍵,並在螢幕上以適當的屬性顯示文字。

文件標題僅是一行以冒號(:)開頭的文字。

文件段落只是一行文字。在SynProject中,每行文字都有一個段落。您可以使用原始RTF命令\line(或Ctrl+K快捷鍵)強制“下一行”換行。您可以使用工具欄上相應的按鈕在編輯器中自動換行段落。但SynProject將自行完成大部分文件佈局。專注於內容,SynProject將負責佈局。

空行將被忽略。它們可能僅在將節的頭部與其主體內容分開時有用。

列表可以在文件中編寫,僅需在每行開頭使用連字元(-)字元即可。您可能已經注意到,段落前後都有一個空格。如果您在行的第一個位置放置多條帶有連字元的行,則所有這些行都將被格式化為列表,而不會在行內容前後留下這些空格。

可以輕鬆地將原始碼插入文件中。只需將程式碼複製並貼上到SynProject編輯器中,然後在原始碼行的第一個位置放置一些專用字元:! 表示Pascal/Delphi,& 表示C或C++,# 表示C#,µ 表示Modula-2,$ 表示常規文字。工具欄上有對應的按鈕:只需選擇幾行,然後點選按鈕並選擇正確的程式碼格式——第一個字元將新增到所選每行的第一個位置。

如果您在行的第二個位置放置一個!字元(在! & # µ $字元之後),原始碼將被高亮顯示:在文件中將以黃色顯示。

可以使用以%字元開頭的行插入圖片。首先使用工具欄上對應的按鈕,然後插入一行%filename.jpg。文件檔案開頭的[Pictures]部分包含所有使用的圖片的列表。必須將圖片複製到當前文件目錄,即.pro檔案所在的資料夾。

插入表格需要三個步驟。首先,透過第一行定義列寬,如“|%30%40%30”——它將根據當前頁面寬度定義三列,寬度分別為30%、40%和30%。然後,像“|Col 1|Col 2|Col 3”這樣放置您的文字:文件中的每一行都是一個行,列內容之間用|字元分隔。當所有行都插入後,用一行“|%”結束表格。

您可以在表格單元格中嵌入圖片,例如,使用@=%picture.png@——在這種情況下,這不是一個“按鈕”——請參閱下一項。

您可以新增“按鈕”,即連結到另一個項,使用@SectionName@(如@DI-4.1@)或@DocName@(如@SRS@)或@PeopleName@(如@Arnaud Bouchez@)或@%Picture.png@。報告將包含連結的名稱和頁面。

Internet連結將被處理為超連結,使用@http://synopse.info的語法

在[SDD-*]部分中,為每個檔名指定@Module\filename.pas@,為修改過的檔名指定@!Module\filename.pas@,或為指定的過程名指定@!procedurename!Module\filename.pas@。相應的單元(和過程)將在[SAD]文件中被高亮顯示,並在其第二部分列出。只需點選按鈕即可顯示物件瀏覽器視窗,並透過幾次點選選擇單元名稱和函式/類。

使用=[SectionName]在當前位置包含該部分的內容。

一些特殊行被解釋為命令:它們的第一個字元必須是反斜槓,即\字元。

所有可輸入的特殊行命令列表:

\page 強制新的一頁
\landscape 將頁面方向更改為橫向
\portrait 將頁面方向更改為縱向
\footer blabla 更改頁尾文字
\Layout 新增一個包含所有DILayout標題的列表
\LayoutPage 同上,但還包括文件中的相關頁面
\risk 新增風險評估量表表格
\Source(用於[SAD]部分)新增Source=..模組的列表
\SourcePage 同上,但還包括文件中的相關頁面
\include filename.ext 將任何文字檔案附加到文件內容——文字格式的型別假設來自檔名副檔名本身(例如,some.pas檔案將以Delphi/pascal原始碼檔案的形式顯示)
\graph UniqueImageName [Title] 然後是後續行,可以是.dot純文字,也可以是"\From Text\To Text[\兩者之間的標籤]"——按F12鍵開啟對話方塊
\TableSoftwareChanges\TableTraceabilityMatrix 用於SCRS
\TableNewFeatures\TableBugFixes\TableTests[=October 16, 2008] 用於發行說明
\TableDI=6.3.1.2,6.3.1.3 用於包含所有提供的設計輸入的表格
\TableDocuments[=DI,SRS,SDD,SAD] 用於包含提供的文件細節的表格
\Implements TableImplementsName #.# [Description][\DocumentName](如 \Implements ISO 4.3 Software safety classification)在文字中指向當前文件或指定的DocumentName
\TableImplements=TableImplementsName(如 \TableImplements=ISO)建立列表,按升序的#.#數字排序,如果有描述則包含描述和相應的文件

問題與評論

您可以使用我們的論壇和SynProject專用部分來發布您的評論或反饋。

我希望我對SynProject的介紹能引起您的興趣。

而且別忘了,它是作為開源釋出的:歡迎您貢獻,並根據您的需求進行調整——當然,前提是遵循GPL許可條款!

相關文章