/analyze
(Kod analizi)
Kod analizini ve denetim seçeneklerini etkinleştirir.
Sözdizimi
Genel analiz seçenekleri:
/analyze
[-
]
/analyze:only
/analyze:quiet
/analyze:max_paths
number
/analyze:stacksize
number
/analyze:WX-
Analiz eklentisi seçenekleri:
/analyze:plugin
plugin_dll
Dış dosya çözümleme seçenekleri:
/analyze:external-
/analyze:external:ruleset
ruleset_files
Çözümleme günlüğü seçenekleri:
/analyze:autolog
[-
]
/analyze:autolog:ext
extension
/analyze:log
log_path
Günlük dosyası biçimi seçenekleri:
/analyze:log:format:sarif
/analyze:log:format:xml
Günlük dosyası içerik seçenekleri:
/analyze:sarif:analyzedfiles
[-
]
/analyze:sarif:configuration
[-
]
/analyze:log:compilerwarnings
/analyze:log:includesuppressed
Kural kümesi seçenekleri:
/analyze:ruleset
ruleset_file
Kural kümesi seçenekleri:
/analyze:projectdirectory
project_directory
/analyze:rulesetdirectory
ruleset_directories
/analyze:ruleset
ruleset_files
Bağımsız değişkenler
Genel analiz seçenekleri
/analyze
[-
]
Kod analizini açar. Analizi açıkça kapatmak için kullanın /analyze-
. /analyze-
varsayılan davranıştır.
Varsayılan olarak, çözümleme çıkışı diğer hata iletileri gibi konsola veya Visual Studio Çıktı penceresine gider. Kod analizi, analiz edilen kaynak dosyanın adı olan filename
adlı filename.nativecodeanalysis.xml
bir günlük dosyası da oluşturur.
/analyze:only
Varsayılan olarak, derleyici kod analizi çalışmadan önce nesne dosyaları oluşturmak için kodu derler. /analyze:only
seçeneği, derleyicinin kod oluşturma geçişini atlar ve doğrudan kod analizi yapar. Derleyici hataları yine de kod analizinin çalışmasını engeller. Ancak, derleyici kod oluşturma geçişi sırasında bulabileceği diğer uyarıları raporlamaz. Program kod oluşturma uyarılarından arındırılmamışsa analiz sonuçları güvenilir olmayabilir. Bu seçeneği yalnızca kod, kod oluşturma söz dizimi denetimlerini hatasız veya uyarısız geçtiğinde kullanmanızı öneririz.
/analyze:quiet
Çözümleme çıkışını konsola veya Visual Studio Çıkış penceresine kapatır.
/analyze:max_paths
number
parametresi analiz number
etmek için en fazla kod yolu sayısını belirtir. Çözümleme varsayılan olarak 256 yoldur. Daha büyük değerler daha kapsamlı denetime neden olur, ancak analiz daha uzun sürebilir.
/analyze:stacksize
number
parametresi, number
C6262 uyarısını oluşturan yığın çerçevesinin bayt cinsinden boyutunu belirtir. Varsayılan yığın çerçevesi boyutu 16 KB'tır.
/analyze:WX-
Seçenek kullanıldığında bile /WX
derleyiciye kod çözümleme uyarılarını hata olarak ele almaması gerektiğini bildirir. Daha fazla bilgi için bkz /WX
. (Uyarı düzeyi).
Analiz eklentisi seçenekleri
/analyze:plugin
plugin_dll
Kod analizi için belirtilen kod analizi eklenti DLL'sini etkinleştirir.
Yol çift tırnak ("
) gerektirmiyorsa, plugin_dll
dosya yolu ile arasındaki /analyze:plugin
boşluk isteğe bağlıdır. Örneğin, yazabilirsiniz /analyze:plugin EspxEngine.dll
. Ancak, yol çift tırnak içine alınmışsa, ile dosya yolu arasında /analyze:plugin
boşluk olamaz. Aşağıda bir örnek verilmiştir: /analyze:plugin"c:\path\to\EspxEngine.dll"
.
Kod çözümleme altyapısı, belirli hata kategorilerini bulmaya yardımcı olmak için eklentiler kullanır. Kod analizi altyapısı, çeşitli hataları algılayan bazı yerleşik eklentilerle birlikte gelir. Kod çözümleme altyapısıyla başka bir eklenti kullanmak için seçeneğini kullanarak /analyze:plugin
bunu belirtin.
Eklenti LocalEspC.dll
eşzamanlılık ile ilgili analiz denetimleri uygular. Bu denetimler C261XX aralığında C26100 ile C26167 arasında uyarı oluşturur.
yüklemek LocalEspC.dll
için derleyici seçeneğini /analyze:plugin LocalEspC.dll
kullanın.
Visual Studio ile birlikte gelen gibi EspXEngine.dll
bazı eklentilerde daha fazla analiz yapabilen uzantılar kullanılabilecek. Visual Studio EspXEngine için şu uzantıları içerir: ConcurrencyCheck.dll
, CppCoreCheck.dll
, EnumIndex.dll
, HResultCheck.dll
ve VariantClear.dll
. Eşzamanlılık sorunları, CppCoreGuidelines ihlalleri, değerlerin enum
dizinler, HRESULT
değerler veya VARIANT
değerler olarak uygunsuz kullanımları için hata olup olmadığını denetler.
Komut satırında derleme yaparken, EspXEngine uzantılarını belirtmek için ortam değişkenini kullanabilirsiniz Esp.Extensions
. Örneğin:
set Esp.Extensions=ConcurrencyCheck.dll;CppCoreCheck.dll;
Örnekte gösterildiği gibi uzantıları sınırlandırmak için noktalı virgül (;
) kullanın. Sondaki noktalı virgül gerekli değildir. Bir uzantı için mutlak dosya yolu kullanabilir veya içeren EspXEngine.dll
dizinden göreli bir yol belirtebilirsiniz.
Eklenti, EspXEngine.dll
eşzamanlılık ile ilgili kod analizi denetimlerini uygulamak için kullanır ConcurrencyCheck.dll
. Bu denetimler C261XX aralığında C26100 ile C26167 arasında uyarı oluşturur.
Geliştirici komut istemi penceresinde oluşturuyorsanız, önce uzantıyı Esp.Extensions
belirtmek için ortam değişkenini ConcurrencyCheck.dll
ayarlayın:
set Esp.Extensions=ConcurrencyCheck.dll
Ardından EspXEngine eklentisini kullanmak için derleyici seçeneğini /analyze:plugin EspXEngine.dll
kullanın.
Dış dosya çözümleme seçenekleri
Visual Studio 2019 sürüm 16.10'dan başlayarak, dış üst bilgiler için farklı çözümleme kuralları ve davranışı belirtebilirsiniz. Dizinleri /external:I
"dış" dizinler olarak belirtmek için , /external:env
veya /external:anglebrackets
seçeneklerini kullanın. Dış dizinden veya alt dizinlerinden kullanılarak #include
eklenen tüm dosyalar dış üst bilgi olarak kabul edilir. Daha fazla bilgi için bkz /external
. (Dış üst bilgi tanılamaları).
Kod analizi, dış dosyaların analizini denetlemek için şu seçenekleri sağlar:
/analyze:external-
Dış üst bilgi dosyalarının analizini atlar. Varsayılan olarak, kod analizi dış üst bilgi dosyalarını diğer dosyalar gibi analiz eder. /analyze:external-
Seçenek ayarlandığında, kod analizi dış dosyalardan şablonlar dışında dış olarak belirtilen tüm dosyaları atlar. Dış üst bilgilerde tanımlanan şablonlar, seçeneği kullanılarak /external:templates-
dış olmayan olarak değerlendirilir. bu /external:Wn
seçenek kod analizini etkilemez. Örneğin, kod analizi dış dosyaları analiz eder ve belirtildiğinde /external:W0
bile hataları raporlar.
/analyze:external:ruleset
ruleset_files
parametresi, ruleset_files
dış dosyaların analizi için kullanılacak bir veya daha fazla noktalı virgülle ayrılmış kural kümesi dosyasını belirtir. Kural kümeleri hakkında bilgi için "Kural kümeleri için seçenekler" bölümüne bakın.
Ortam değişkeninde belirtilen dizinler altındaki dosyaların analizini atlamak için benzer ama daha basit bir özellik sağlayan bir ortam değişkeni (CAExcludePath
) vardır. Bir dizin hem seçenekte hem de /external:*
ortam değişkeninde CAExcludePath
belirtilirse, bu dizin dışlanmış olarak kabul edilir ve /analyze:external*
seçenekler bu dizine uygulanmaz.
Çözümleme günlüğü seçenekleri
/analyze:autolog
[-
]
Analiz edilen kaynak dosyaların her biri için çözümleme günlüğü dosyasının oluşturulmasını etkinleştirmek için bu bayrağın kullanılması gerekiyordu. Günlük dosyaları artık varsayılan olarak oluşturulduğu için bu bayrak çoğunlukla yedeklidir.
Kullanıldığında, varsayılan günlük uzantısını .xml
yerine olarak *.pftlog
değiştirir. Dosyalarda günlüğe kaydetmeyi devre dışı bırakmak için kullanın /analyze:autolog-
.
/analyze:autolog:ext
extension
Çözümleme günlüğü dosyalarının varsayılan uzantısını geçersiz kılar ve bunun yerine kullanır extension
. Uzantıyı .sarif
kullanırsanız, günlük dosyası varsayılan XML biçimi yerine SARIF biçimini kullanır.
/analyze:log
log_path
Otomatik olarak oluşturulan günlük dosyası yolu log_path
yerine bir günlük dosyası yolu belirtir. log_path
Yolun sonunda ters eğik çizgi olduğunda ve var olan bir dizine başvurduğunda, kod analizi belirtilen dizindeki tüm günlük dosyalarını oluşturur. Aksi takdirde, log_path
bir dosya yolu belirtir. Dosya yolu, derleyiciye tüm çözümlenen kaynak dosyaları için günlükleri belirtilen günlük dosyasında birleştirmesini yönlendirir. Dosya yolunun uzantısı .sarif
varsa, günlük dosyası varsayılan XML biçimi yerine SARIF biçimini kullanır. seçeneğini kullanarak /analyze:log:format:*
bu davranışı geçersiz kılabilirsiniz.
Günlük dosyası biçimi seçenekleri
Visual Studio 2019 sürüm 16.9'dan başlayarak, kod analizi için farklı günlük biçimi seçenekleri belirtebilirsiniz.
/analyze:log:format:xml
XML günlük biçiminin kullanılmasını kullanılan dosya uzantısının ilgisiz olarak zorlar.
/analyze:log:format:sarif
SARIF günlük biçiminin kullanılmasını kullanılan dosya uzantısının ilgisiz olarak zorlar.
Günlük dosyası içerik seçenekleri
Visual Studio 2019 sürüm 16.9'dan başlayarak, kod analizi için farklı günlük içeriği seçenekleri belirtebilirsiniz.
/analyze:sarif:analyzedfiles
[-
]
Uyarı göndermeyen çözümlenmiş dosyalar için SARIF günlük dosyasına dosya yapıtları girdileri ekler. Bu seçenek varsayılan olarak devre dışıdır. Kaynak dosya ve sonuçların yaydığı dosyalar için yapıtlar her zaman eklenir.
/analyze:sarif:configuration
[-
]
Kullanıcının varsayılan kural yapılandırmasını (varsayılan olarak devre dışı) nasıl aşdığını belirlemek için kural yapılandırma girdileri ekler.
/analyze:log:compilerwarnings
Hem çözümleme altyapısının bulduğu hataları hem de tüm derleyici uyarılarını analiz günlüğü dosyasına ekler. Varsayılan olarak, derleyici uyarıları çözümleme günlüğü dosyasına dahil değildir. Kod analizi sırasında derleyici uyarıları hakkında daha fazla bilgi için seçeneğine /analyze:only
bakın.
/analyze:log:includesuppressed
Hem gizlenen uyarıları hem de desteklenmeyen uyarıları analiz günlüğü dosyasına ekler. Varsayılan olarak, gizlenen uyarılar analiz günlüğü dosyasına dahil değildir. Kural kümesi dosyaları analiz için belirtilirse, kural kümesi dosyaları tarafından devre dışı bırakılan uyarılar belirtildiğinde bile /analyze:log:includesuppressed
günlüğe dahil değildir.
Kural kümesi seçenekleri
/analyze:projectdirectory
project_directory
Geçerli proje dizinini belirtir. Kural kümesi (veya içerdiği bir öğe) bir dosya adıysa, derleyici dosyayı önce belirtilen project_directory
altında arar. Bulunamazsa, daha sonra tarafından belirtilen /analyze:rulesetdirectory
öğesini (varsa) ararruleset_directories
. Kural kümesi (veya içerdiği bir öğe) göreli bir yolsa, derleyici dosyayı önce proje dizininin altında arar. Kural kümesi bulunamazsa geçerli çalışma dizininde görünür. Bu seçenek Visual Studio 2019 sürüm 16.9'dan itibaren kullanılabilir.
/analyze:rulesetdirectory
ruleset_directories
Kural kümesi arama yollarının noktalı virgülle ayrılmış listesini belirtir. Kural kümesi (veya içerdiği bir öğe) bir dosya adıysa, derleyici önce tarafından belirtilen /analyze:projectdirectory
altında , varsa ve ardından belirtilen ruleset_directories
öğesinin altında project_directory
dosyayı arar. Bu seçenek Visual Studio 2019 sürüm 16.9'dan itibaren kullanılabilir.
/analyze:ruleset
ruleset_files
Analiz için kullanılacak bir veya daha fazla kural kümesi dosyasını belirtir. Bu seçenek analizi daha verimli hale getirir; çözümleme altyapısı, çalıştırmadan önce kural kümesi dosyalarında etkin kuralları belirtilmemiş olan damacıları dışlamaya çalışır. Aksi takdirde, altyapı tüm damacıları etkinleştirir.
/analyze:ruleset
ruleset_file
Analiz için kullanılacak bir kural kümesi dosyası belirtir. Bu seçenek analizi daha verimli hale getirir; çözümleme altyapısı, çalıştırmadan önce kural kümesi dosyasında etkin kuralları belirtilmemiş olan damacıları dışlamaya çalışır. Aksi takdirde, altyapı tüm damacıları etkinleştirir.
Visual Studio ile birlikte gelen kural kümesi dosyaları içinde %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets
bulunur.
Aşağıdaki örnek özel kural kümesi, analiz altyapısına C6001 ve C26494 olup olmadığını denetlemesini ve bunları uyarı olarak raporlamasını söyler.
Bağımsız değişkende tam yolu belirttiğiniz sürece bu dosyayı herhangi bir yere yerleştirebilirsiniz.
Bağımsız değişkende tam yolu belirttiğiniz sürece veya veya /analyze:rulesetdirectory
seçeneklerinde belirtilen /analyze:projectdirectory
dizinlerin altına bu dosyayı herhangi bir yere yerleştirebilirsiniz.
<?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="New Rule Set" Description="New rules to apply." ToolsVersion="15.0">
<Rules AnalyzerId="Microsoft.Analyzers.NativeCodeAnalysis" RuleNamespace="Microsoft.Rules.Native">
<Rule Id="C6001" Action="Warning" />
<Rule Id="C26494" Action="Warning" />
</Rules>
</RuleSet>
Varsayılan olarak, kural kümesi dosyalarının dosya uzantısıdır *.ruleset
. Visual Studio, kural kümesi dosyalarına göz atarken varsayılan uzantıyı kullanır. Ancak, herhangi bir uzantıyı kullanabilirsiniz.
Kural kümeleri hakkında daha fazla bilgi için bkz . Çalıştırılacak C++ kurallarını belirtmek için kural kümelerini kullanma.
Açıklamalar
Daha fazla bilgi için bkz . C/C++ için kod analizine genel bakış ve C/C++ uyarıları için kod analizi.
Bu derleyici seçeneğini Visual Studio geliştirme ortamında ayarlamak için
Projenin Özellik Sayfaları iletişim kutusunu açın. Ayrıntılar için bkz . Visual Studio'da C++ derleyicisi ve derleme özelliklerini ayarlama.
Yapılandırma Özellikleri>Kod Analizi>Genel özellik sayfasını seçin.
Kod Analizi özelliklerinden birini veya daha fazlasını değiştirin.
Değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.
Visual Studio 2019 sürüm 16.10 ve sonraki sürümlerde dış dosya çözümleme seçeneklerini ayarlamak için:
Projenin Özellik Sayfaları iletişim kutusunu açın.
Yapılandırma Özellikleri>C/C++>Dış İçerir özellik sayfasını seçin.
Özellikleri ayarla:
Dış Üst Bilgiler için Kod Analizini
/analyze:external-
Devre Dışı Bırak seçeneği ayarlar.Dış Üst Bilgiler için Çözümleme Kural Kümesi seçeneği ayarlar
/analyze:external:ruleset path
.
Değişikliklerinizi kaydetmek için Tamam'ı veya Uygula'yı seçin.
Bu derleyici seçeneğini program üzerinden ayarlamak için
- Bkz. EnablePREfast.
Ayrıca bkz.
MSVC derleyici seçenekleri
MSVC derleyicisi komut satırı söz dizimi