首頁
關於我們
最新消息
技術部落格
線上客服
聯絡我們
企業永續發展
Facebook
Ig
Youtobe
迪凱科技有限公司 AHA Computer Company., Ltd
產品目錄
硬體
PassMark
監控
Advanced Network Software
DevEnterprise Software
Faronics
HwaCom
iMonitor Software
Nagios
Progress
Paessler
Pingman Tools
SolarWinds
SeriousBit
TamoSoft
UVnetworks
USSE
Wangya
影音
ACD Systems
Artlist
Blackmagic Design
EDIUS.NET
FastStone
GoldWave
GoAnimate
Hyperionics
Movavi
NGWIN
New House
Powtoon
PearlMountain
SVGator
Stepok Image Lab
StudioCoast
TechSmith
Voicemaker Technologies
Wondershare
傳輸
CrushFTP
DEXTSolution
FileZilla Pro
Globalscape
JSCAPE
Redwood
South River
Syncplify
Progress
Wftpserver
開發
Altova
Aspose
AccuSoft
Arction
Allround Automations
AG Grid
Axure Software
Axosoft
AquaFold
AIFEI & AdminSystem
Atlassian
Benthic
Bunifu Technologies
BALKAN
ChangeVision
Caphyon
CodedThemes
DbVisualizer
Developer Express
DevExpress
Danil Pristupov
Emurasoft
ES-Computing
Easysoft
e-iceblue
Embarcadero
Electronic Team
FusionCharts
Fast Reports
Froala
Figma
Fenopix
Golden
Genuitec
GitHub
Generic Logic
Hex-Rays
Highcharts
HHD Software
Idera (UltraEdit)
JetBrains
jsreport
LEADTOOLS
MESCIUS
Medixant
Perforce Software
Progress Software
Postman
Pinata
Revenera
Redgate
Software FX
Source Dynamics
SlickEdit
Steema
Softek Software
Stimulsoft
Sketch B.V.
SonarSource
Sparx Systems
Syncfusion
StackBlitz
Serenity Software
SourceGuardian
Tiny Technologies
Quest Software
Woll2Woll
Wiris
Whole Tomato
Wingware
Xceed Software
YourKit
連線
AnyDesk
Famatech
Mobatek
NetSarang
OpenSight
PremiumSoft
Parallels
Qbik
RealVNC
Rocket Software
StarNet
TeamViewer
Thinstuff
Thincast
VanDyke
文書
AutoDWG
Autodesk
Apryse Software
Boshiamy
Bluebeam
Bricsys NV
Cogniview
CADSoftTools
Enfocus
Foxit
FlipBuilder
Guanhuang Computer
IQ Technology
Icecream Apps
Jspreadsheet
Neevia Tech
progeSOFT
pdfforge
Softland
Software Companions
Tracker
TechSoft 3D
Trimble
Tungsten Automation
ZEON
ZWSOFT
備份還原
2BrightSparks
AOMEI
Botkind
Centered Systems
EaseUS
Enter Srl
Faronics
FileGee
Horizon DataSys
Paramount Software
R-Tools
Softland
Siber Systems
X-Ways Software
管理比較
Araxis
Ghisler
KIDASA
Litera Corp
pblSoft software
Scooter
SystemTools
VisualSVN Software
檢測分析
BAPCO
Benchmarks
busTRACE
BrowserStack
Docklight
FinalWire
Imatest
MicroMega Solutions
NetSpot
Perisoft
PassMark
Portrait Displays
Primate Labs
PVsyst
Ranorex GmbH
SyetemTools
TamoSoft
資訊安全
Acunetix
Bitdefender
ESET
EaseFilter
MailStore Software
Piriform
PortSwigger
PassFab
Red Gate
Stratesave Systems
SAFEJKA SRL
其他
Adobe
Axonic
AutoPod
AnQing Inspector
ActFax Communication
ApSIC
Anthropic PBC
Brooks Internet
Barcodesoft
Corel
ConeXware
Cisco Systems
Classroomscreen
Dotmatics
Docker
Dimension 5
Envato
Evernote
FinePrint
Fortra
Greyscalegorilla
GoDaddy
High-Logic BV
iDeskCentric
Inforiver
iStockphoto LP
Inmagine Lab
Irfan Skiljan
Keyword Tool
krpano
Lansweeper
Lucid Software
MDaemon Technologies
Modbus Tools
MongoDB
Mister Horse
Neuxpower
/n software
Newsletter Creator
Notion Labs
O’Reilly Media
Ohsoft
Office Timeline
OpenAI
Ondoku3
PrintLimit
PROTOIO
PDQ.com
Pear Deck
Productboard
RarLab
Roadmunk
Richardson Software
Shodan
Smartsheet
Teklynx
TinyURL
think-cell
VMware
VERBI
Video Copilot
Wordwall
WP Rocket
Xmind
Zeplin
最新消息
[專欄]JetBrains 部落格 / Anastasia Kazakova 專欄 - 爭取更好的 C++ 程式碼第二部分:加速資料流分析的函數摘要
2024/01/22
[專欄]JetBrains 部落格 / Anastasia Kazakova 專欄 - 爭取更好的 C++ 程式碼第二部分:加速資料流分析的函數摘要
原文由 Anastasia Kazakova 於 2023 年 12 月 1 日發布
資料流分析中引入函數摘要(Introducing function summaries in data flow analysis)
在 CLion 2023.3
預覽版
中,我們徹底重新設計了 CLion 的 DFA,使分析更快、更準確。我們實作了一種稱為函數摘要方法(
function summaries
approach),它使我們能夠區分任意巢狀呼叫鏈的不同函數上下文,從而實現更準確的分析。讓我們看看這是如何完成的。
在先前的 CLion 版本中,我們的 DFA 已經是跨過程的。 它透過函數的參數和返回值處理函數呼叫和資料流。對於每個函數,它形成了由函數呼叫網站定義的幾個「外部」上下文。 這意味著給定函數的所有呼叫站點都會受到不同的處理。儘管該方法確實比上下文不敏感分析(不考慮呼叫站點)具有更高的精度,但它有幾個缺點。
首先,僅處理深度為 1 的上下文。如果您從另一個函數 B 呼叫函數 A,然後從多個呼叫網站呼叫函數 B,它們的上下文將合併,導致準確性損失:
目前的函數摘要方法使用內部上下文而不是外部。這些內部上下文是由函數本身而不是其被呼叫者定義的。如果函數依賴某些輸入值(參數、全域變數、欄位或這些輸入值的條件),則它具有多個上下文 - 每個輸入一個。例如,下列函數有兩個上下文,一個用於
c.x > 10
,另一個用於
c.x <= 10
:
這些上下文不依賴函數的呼叫站點,並且完整地描述了函數的語義。函數在不同上下文中的行為通常稱為函數摘要。函數摘要的引入幫助我們使分析更快、更精確。
採用這種方法也使我們能夠支援分析中的欄位。現在,每個函數摘要都會追蹤哪些欄位是輸入,哪些欄位是輸出,因此程式的堆疊現在可以更精確地建模。
所有描述的變化使我們的分析真正實現了過程間分析,同時表現更高。為了展示 CLion 中新分析的強大功能,讓我們來看看以下範例:
所有現有的分析也受益於這些變化。數組索引越界檢查現在處理透過欄位和參數傳遞的數組,空取消引用、常數條件和其他檢查也是如此。 還有一個名為字段未初始化的新檢查,它跟踪其值在使用前未初始化的字段:
以上資料來源來自:
JetBrains 部落格 /
Anastasia Kazakova
專欄 /
Striving For Better C++ Code, Part II: Function Summaries to Speed Up the Data Flow Analysis
.
Anastasia Kazakova 部落格:
https://blog.jetbrains.com/author/anastasia-kazakova/
.立即試作:
https://www.jetbrains.com/clion/download/download-thanks.html?platform=windows
.
購買/續約:
https://www.ahasoft.com.tw/page/product/show.aspx?num=112&kw=CLion&page=1&lang=TW
回列表頁
購物車
0
會員登入
購物須知
Facebook
TOP