{"id":8722,"date":"2025-07-31T16:24:04","date_gmt":"2025-07-31T07:24:04","guid":{"rendered":"https:\/\/hasu0707.duckdns.org\/blog\/?p=8722"},"modified":"2025-07-31T16:24:05","modified_gmt":"2025-07-31T07:24:05","slug":"opentext-fortify-sourceanalyzer%eb%a1%9c-swift-%ec%bd%94%eb%93%9c-%eb%b6%84%ec%84%9d%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/hasu0707.duckdns.org\/blog\/?p=8722","title":{"rendered":"OpenText Fortify SourceAnalyzer\ub85c Swift \ucf54\ub4dc \ubd84\uc11d\ud558\uae30"},"content":{"rendered":"\n<p>OpenText Fortify\uc758&nbsp;<code>sourceanalyzer<\/code>\ub97c \uc0ac\uc6a9\ud558\uc5ec Swift \ud504\ub85c\uc81d\ud2b8\ub97c \ubd84\uc11d\ud558\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ub4dc\ub9bd\ub2c8\ub2e4. Swift \ubd84\uc11d\uc740 \ub2e4\ub978 \uc5b8\uc5b4\uc640 \uc57d\uac04 \ub2e4\ub978 \uc811\uadfc\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. \ud544\uc218 \uc900\ube44 \uc0ac\ud56d<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fortify SCA 20.2 \uc774\uc0c1 \ubc84\uc804 (Swift \uc9c0\uc6d0 \ubc84\uc804)<\/li>\n\n\n\n<li>Swift \ucef4\ud30c\uc77c\ub7ec \uc124\uce58 (Xcode \ud3ec\ud568)<\/li>\n\n\n\n<li>macOS \ud658\uacbd (Linux\uc5d0\uc11c\uc758 Swift \ubd84\uc11d\uc740 \uc81c\ud55c\uc801)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">2. \uae30\ubcf8 \ubd84\uc11d \ubc29\ubc95<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ubc29\ubc95 1: \uc9c1\uc811 \ucef4\ud30c\uc77c \uba85\ub839 \uc0ac\uc6a9<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject swiftc -emit-object MyFile.swift<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ubc29\ubc95 2: Xcode \ud504\ub85c\uc81d\ud2b8 \ubd84\uc11d<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">3. Swift Package Manager(SPM) \ud504\ub85c\uc81d\ud2b8 \ubd84\uc11d<\/h2>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySPMProject -clean\nsourceanalyzer -b MySPMProject swift build\nsourceanalyzer -b MySPMProject -scan -f swift_results.fpr<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">4. \uace0\uae09 \ubd84\uc11d \uc635\uc158<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Swift \ubc84\uc804 \uc9c0\uc815<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject -swift-version 5 xcodebuild [...]<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ubd84\uc11d \uba54\ubaa8\ub9ac \uc124\uc815<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject -Xmx8G -analysis-memory 8G swift build<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ubcd1\ub82c \ubd84\uc11d<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject -mt swift build<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">5. CocoaPods \ud504\ub85c\uc81d\ud2b8 \ubd84\uc11d<\/h2>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MyPodProject pod install\nsourceanalyzer -b MyPodProject xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">6. \ubd84\uc11d \uacb0\uacfc \uc0dd\uc131 \ubc0f \ud655\uc778<\/h2>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject -scan -f swift_results.fpr\nAuditWorkbench swift_results.fpr<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">7. \uc77c\ubc18\uc801\uc778 \ubb38\uc81c \ud574\uacb0<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\ube4c\ub4dc \uc124\uc815 \ubb38\uc81c<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme -destination 'platform=macOS'<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">SDK \uacbd\ub85c \uc9c0\uc815<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject xcodebuild [...] -sdk $(xcrun --show-sdk-path)<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\ubd84\uc11d \ubc94\uc704 \uc81c\ud55c<\/h3>\n\n\n\n<p>bash<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">sourceanalyzer -b MySwiftProject -exclude \"Pods\/**\" xcodebuild [...]<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">\uc8fc\uc758\uc0ac\ud56d<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Swift \ubd84\uc11d\uc740 Fortify SCA 20.2 \uc774\uc0c1\uc5d0\uc11c\ub9cc \uc644\uc804\ud788 \uc9c0\uc6d0\ub429\ub2c8\ub2e4.<\/li>\n\n\n\n<li>Xcode \ud504\ub85c\uc81d\ud2b8\ub294 \uc644\uc804\ud55c \ube4c\ub4dc \uac00\ub2a5\ud55c \uc0c1\ud0dc\uc5ec\uc57c \ud569\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\ub300\ud615 \ud504\ub85c\uc81d\ud2b8\uc758 \uacbd\uc6b0 \ucda9\ubd84\ud55c \uba54\ubaa8\ub9ac\ub97c \ud560\ub2f9\ud558\uc138\uc694.<\/li>\n\n\n\n<li>SwiftUI \ucf54\ub4dc \ubd84\uc11d\uc5d0\ub294 \uc77c\ubd80 \uc81c\ud55c\uc774 \uc788\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/li>\n\n\n\n<li>\uc678\ubd80 \uc885\uc18d\uc131(Pods, SPM \ud328\ud0a4\uc9c0)\uc740 \uc0ac\uc804\uc5d0 \uc124\uce58\ub418\uc5b4 \uc788\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>OpenText Fortify\uc758&nbsp;sourceanalyzer\ub97c \uc0ac\uc6a9\ud558\uc5ec Swift \ud504\ub85c\uc81d\ud2b8\ub97c \ubd84\uc11d\ud558\ub294 \ubc29\ubc95\uc744 \uc124\uba85\ub4dc\ub9bd\ub2c8\ub2e4. Swift \ubd84\uc11d\uc740 \ub2e4\ub978 \uc5b8\uc5b4\uc640 \uc57d\uac04 \ub2e4\ub978 \uc811\uadfc\uc774 \ud544\uc694\ud569\ub2c8\ub2e4. 1. \ud544\uc218 \uc900\ube44 \uc0ac\ud56d 2. \uae30\ubcf8 \ubd84\uc11d \ubc29\ubc95 \ubc29\ubc95 1: \uc9c1\uc811 \ucef4\ud30c\uc77c \uba85\ub839 \uc0ac\uc6a9 bash sourceanalyzer -b MySwiftProject swiftc -emit-object MyFile.swift \ubc29\ubc95 2: Xcode \ud504\ub85c\uc81d\ud2b8 \ubd84\uc11d bash sourceanalyzer -b MySwiftProject xcodebuild -workspace MyProject.xcworkspace -scheme MyScheme 3. Swift Package Manager(SPM) [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[66],"tags":[],"class_list":["post-8722","post","type-post","status-publish","format-standard","hentry","category-computing_fortify"],"_links":{"self":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8722","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8722"}],"version-history":[{"count":0,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=\/wp\/v2\/posts\/8722\/revisions"}],"wp:attachment":[{"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasu0707.duckdns.org\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}