目錄 / Table of Contents

OdfKit 程式碼來源稽核(Provenance)

本目錄記錄 OdfKit 各模組的來源、授權與重寫策略,供貢獻者與審查者查閱。

採用者法遵與複合授權義務、DCO、商標與盡職調查清單,請另見 智慧財產與合規說明

授權總覽

範圍 授權
OdfKit 原創程式碼 CC0 1.0 Universal
PDFsharp MIT
CommunityToolkit.HighPerformance MIT
System.Security.Cryptography.Xml MIT
OASIS ODF RNG Schema OASIS 標準文件

產生式程式碼(可安全追溯)

以下檔案由 tools/OdfSchemaGeneratoreng/Generate-OdfSchemaProvider.ps1 從 OASIS RNG 產生,不可手動編輯

  • OdfKit/DOM/Generated/*.g.cs:typed DOM wrapper、factory case、typed attribute 與 schema child collection。
  • OdfKit/Compliance/Generated/Odf*OfficialSchemaProvider.g.cs:ODF 1.0/1.1/1.2/1.3/1.4 官方 schema metadata provider。

重產流程:

dotnet run --project tools/OdfSchemaGenerator --framework net10.0
pwsh eng/Test-OdfTypedDomCoverage.ps1

重產後必須確認 eng/Test-OdfTypedDomCoverage.ps1 的 coverage guard、OdfSchemaGeneratorTestsTypedDomParityTests 仍通過。若產生器導致 wrapper 或 schema metadata 大幅變動, 提交訊息需說明對應的 OASIS schema 來源與差異原因。

同步維護的大型資源表

OdfKit/Compliance/OdfLocalizer.Exceptions.cs 為例外字典入口。 v0.0.1 起,各語系字串的來源真相OdfKit/Compliance/i18n/exceptions.<culture>.jsonOdfLocalizer.Exceptions.<culture>.cseng/Generate-LocalizerExceptionsFromJson.ps1 產生(// <auto-generated />請勿手改)。 新增或修改錯誤訊息時,應編輯 JSON(或 eng/Add-LocalizerKey.ps1)後重產 C#,並同步全部 17 語系(en, zh-TW, da, de, fr, it, ko, ms, nb, nl, pt, sk, ja, es, cs, pl, pt-BR)。 不得只修改單一文化或在呼叫端硬編碼例外訊息。見 i18n/README.mdmaintainability.md

OdfKit/Compliance/OdfLocalizer.ComplianceSuggestions.cs 維護非例外的合規建議補充 翻譯;新增內建 compliance rule 或 suggested-fix key 時,也必須讓 17 個支援語言 合併後的鍵值集合與英文一致。

OdfKit/Compliance/OdfLocalizer.ExtensionDiagnostics.cs 維護 Extensions 套件的診斷 訊息翻譯。新增 OdfKitDiagnostics.WarnInfoError 訊息時,呼叫端不得傳入硬編碼 文字,必須透過 OdfLocalizer.GetMessage 取得 17 語系同步資源。

Clean-room 來源索引

公式評估、schema pattern validator 與 OpenPGP 加密的規格來源、可接受參考、不可接受來源與 golden / regression 測試契約集中記錄於 Clean-room 來源索引。 這些區塊邏輯密集且與外部試算表引擎、驗證器或密碼學實作語意相近,後續變更必須以規格、 自有 corpus 與可再散布 fixture 驅動,不得複製外部原始碼。

模組 檔案 說明
公式評估 DefaultFormulaEvaluator.*.cs 財務與統計函式語意
結構驗證 OdfSchemaPatternValidator.cs 複雜 pattern 比對邏輯
OpenPGP 加密 OdfBouncyCastleOpenPgpProvider*.cs PKESK 封包解析、ECDH/RFC 6637 KDF

已確認無直接抄襲

截至 2026-06 稽核:

  • 未發現 NPOI、Apache POI 或 Java 原始碼嵌入
  • 未發現 LibreOffice 原始碼複製
  • DOM 包裝器由 OASIS schema generator 產生,授權合規

維護建議

  1. 新增第三方參考實作時,記錄於本目錄並標註授權
  2. 財務函式與 schema pattern 變更需附規格來源、來源範圍與對照測試
  3. 勿將產生式 .g.cs 納入 partial 拆分範圍