Doxygen을 통해 XML 파일 출력(종속성 등 분석 결과 포함)

11031 단어 정적 분석doxygen
가져오기
자동 문서 툴Doxygen.많은 프로그래밍 언어와 출력 형식에 대응하기 때문에 사용한 사람도 많다.
본고는 문서가 아닌 XML 출력 코드 의존 관계 등의 Doxygen 설정을 소개한다.
Doxygen 설정
Doxywizard(Doxygen의 GUI 프런트엔드)라면 Expert 태그를 보면 다음과 같은 느낌이 든다.
  • Build 검사를 통해 출력에 포함할 요소
  • Source Browser에서 검사REFERENCED_BY_RELATION/REFERENCES_RELATION
  • XML로 검사GENERATE_XML.XML_PROGRAMLISTING 검사하지 않아도 됩니다



  • 결실
    위의 설정을 통해 Doxygen을 실행하면 XML 파일이 xml 디렉토리 아래로 출력됩니다.


    XML 파일은 소스 파일별로 생성되기 때문에 그렇게 처리하기 어렵다.
    1 파일의 집계를 위한 XSLT/XML ((((combine.xslt/index.xml) 도 출력되며, 이 정리를 사용하면 처리하기 쉽다.
    Windows의 경우 XSLT 처리가 번거롭기 때문에 아래 PowerShell 배치 처리를 준비하면 편리합니다.(NET의 XSLT 처리 시스템을 사용하기 때문에 별도의 XSLT 처리 시스템을 준비할 필요가 없습니다.)
    doxygenxml_combine.ps1
     # DoxygenのXMLを結合する
     # 引数: Doxygen結果のxml格納フォルダ
     [CmdletBinding()]
     param(
         [Parameter(Mandatory=$True)]
         [string]$xml_dir
     )
    
     # お約束
     Set-StrictMode -Version Latest
     $ErrorActionPreference = "Stop"
     $WarningPreference = "Continue"
     $VerbosePreference = "Continue"
     $DebugPreference = "Continue"
     trap {
         $Error | foreach {
             Write-Debug $_.Exception.Message
             Write-Debug $_.InvocationInfo.PositionMessage
         }
         Exit -1
     }
    
    
     #### 処理
    
     # パス準備
     $xml_dir = (Convert-Path $xml_dir)
     [string]$xslt_path = (Join-Path $xml_dir combine.xslt)
     [string]$index_path = (Join-Path $xml_dir index.xml)
     [string]$combined_path = ($xml_dir + ".xml")
    
     # 存在チェック
     if (-not (Test-Path $xslt_path)) {
         Write-Host ("Error File Not Found: " + $xslt_path) -ForegroundColor red
         Exit -1
     }
     if (-not (Test-Path $index_path)) {
         Write-Host ("Error File Not Found: " + $index_path) -ForegroundColor red
         Exit -1
     }
    
     # 結合
     # XSLT読み込み
     $xslt = New-Object System.Xml.Xsl.XslCompiledTransform
     $xslt_setting = New-Object System.Xml.Xsl.XsltSettings
     $xslt_setting.EnableDocumentFunction = $true
     $xslt_setting.EnableScript = $true
     $xslt.Load($xslt_path, $xslt_setting, $null)
     # 出力準備
     $writer_setting = New-Object System.Xml.XmlWriterSettings
     $writer_setting.Indent = $true
     $writer = [System.Xml.XmlWriter]::Create($combined_path, $writer_setting)
     # 変換
     $xslt.Transform($index_path, $writer)
     # 終了
     $writer.Close()
     Write-Host ("Complete Combine: " + $combined_path) -ForegroundColor green
    

    좋은 웹페이지 즐겨찾기