/analyze
(Analisis kode)
Mengaktifkan analisis kode dan opsi kontrol.
Sintaks
Opsi analisis umum:
/analyze
[-
]
/analyze:only
/analyze:quiet
/analyze:max_paths
number
/analyze:stacksize
number
/analyze:WX-
Opsi plugin analisis:
/analyze:plugin
plugin_dll
Opsi analisis file eksternal:
/analyze:external-
/analyze:external:ruleset
ruleset_files
Opsi log analisis:
/analyze:autolog
[-
]
/analyze:autolog:ext
extension
/analyze:log
log_path
Opsi format file log:
/analyze:log:format:sarif
/analyze:log:format:xml
Opsi konten file log:
/analyze:sarif:analyzedfiles
[-
]
/analyze:sarif:configuration
[-
]
/analyze:log:compilerwarnings
/analyze:log:includesuppressed
Opsi ruleset:
/analyze:ruleset
ruleset_file
Opsi ruleset:
/analyze:projectdirectory
project_directory
/analyze:rulesetdirectory
ruleset_directories
/analyze:ruleset
ruleset_files
Argumen
Opsi analisis umum
/analyze
[-
]
Mengaktifkan analisis kode. Gunakan /analyze-
untuk menonaktifkan analisis secara eksplisit. /analyze-
adalah perilaku default.
Secara default, output analisis masuk ke konsol atau jendela Output Visual Studio seperti pesan kesalahan lainnya. Analisis kode juga membuat file log bernama filename.nativecodeanalysis.xml
, di mana filename
adalah nama file sumber yang dianalisis.
/analyze:only
Secara default, pengkompilasi mengkompilasi kode untuk menghasilkan file objek sebelum analisis kode berjalan. Opsi ini /analyze:only
membuat pengkompilasi melewati pass pembuatan kode, dan melakukan analisis kode secara langsung. Kesalahan pengkompilasi masih mencegah analisis kode berjalan. Namun, pengkompilasi tidak akan melaporkan peringatan lain yang mungkin ditemukan selama pembuatan kode lulus. Jika program tidak bebas dari peringatan pembuatan kode, hasil analisis mungkin tidak dapat diandalkan. Sebaiknya gunakan opsi ini hanya jika kode melewati pemeriksaan sintaks pembuatan kode tanpa kesalahan atau peringatan.
/analyze:quiet
Menonaktifkan output analisis ke konsol atau jendela Output Visual Studio.
/analyze:max_paths
number
Parameter number
menentukan jumlah maksimum jalur kode yang akan dianalisis. Analisis default ke 256 jalur. Nilai yang lebih besar menyebabkan pemeriksaan yang lebih menyeluruh, tetapi analisis mungkin memakan waktu lebih lama.
/analyze:stacksize
number
Parameter number
menentukan ukuran dalam byte bingkai tumpukan yang menghasilkan peringatan C6262. Ukuran bingkai tumpukan default adalah 16KB.
/analyze:WX-
Memberi tahu pengkompilasi untuk tidak memperlakukan peringatan analisis kode sebagai kesalahan bahkan ketika /WX
opsi digunakan. Untuk informasi selengkapnya, lihat /WX
(Tingkat peringatan).
Opsi plugin analisis
/analyze:plugin
plugin_dll
Mengaktifkan DLL plug-in analisis kode yang ditentukan untuk analisis kode.
Spasi antara /analyze:plugin
dan plugin_dll
jalur file bersifat opsional jika jalur tidak memerlukan tanda kutip ganda ("
). Misalnya, Anda dapat menulis /analyze:plugin EspxEngine.dll
. Namun, jika jalur diapit dalam tanda kutip ganda, Anda tidak dapat memiliki spasi antara /analyze:plugin
dan jalur file. Berikut adalah contohnya: /analyze:plugin"c:\path\to\EspxEngine.dll"
.
Mesin analisis kode menggunakan plug-in untuk membantu menemukan kategori cacat tertentu. Mesin analisis kode dilengkapi dengan beberapa plug-in bawaan yang mendeteksi berbagai cacat. Untuk menggunakan plug-in lain dengan mesin analisis kode, tentukan dengan menggunakan /analyze:plugin
opsi .
Plug-in LocalEspC.dll
menerapkan pemeriksaan analisis terkait konkurensi. Pemeriksaan ini meningkatkan peringatan dalam rentang C261XX, seperti C26100 hingga C26167.
Untuk memuat LocalEspC.dll
, gunakan opsi /analyze:plugin LocalEspC.dll
pengkompilasi .
Beberapa plug-in, seperti EspXEngine.dll
, yang dikirim dengan Visual Studio, menggunakan ekstensi yang dapat melakukan analisis lebih lanjut. Visual Studio mencakup ekstensi ini untuk EspXEngine: ConcurrencyCheck.dll
, , CppCoreCheck.dll
, EnumIndex.dll
HResultCheck.dll
, dan VariantClear.dll
. Mereka memeriksa cacat untuk masalah konkurensi, pelanggaran CppCoreGuidelines, penggunaan enum
nilai yang tidak tepat sebagai indeks, HRESULT
nilai, atau VARIANT
nilai, masing-masing.
Saat Anda membangun pada baris perintah, Anda dapat menggunakan Esp.Extensions
variabel lingkungan untuk menentukan ekstensi EspXEngine. Contohnya:
set Esp.Extensions=ConcurrencyCheck.dll;CppCoreCheck.dll;
Gunakan titik koma (;
) untuk memisahkan ekstensi, seperti yang ditunjukkan dalam contoh. Titik koma berikutnya tidak diperlukan. Anda dapat menggunakan jalur file absolut untuk ekstensi, atau menentukan jalur relatif dari direktori yang berisi EspXEngine.dll
.
EspXEngine.dll
Plug-in menggunakan ConcurrencyCheck.dll
untuk menerapkan pemeriksaan analisis kode terkait konkurensi. Pemeriksaan ini meningkatkan peringatan dalam rentang C261XX, seperti C26100 hingga C26167.
Jika Anda membangun di jendela prompt perintah pengembang, pertama-tama atur Esp.Extensions
variabel lingkungan untuk menentukan ConcurrencyCheck.dll
ekstensi:
set Esp.Extensions=ConcurrencyCheck.dll
Kemudian, gunakan opsi /analyze:plugin EspXEngine.dll
compiler untuk menggunakan plug-in EspXEngine.
Opsi analisis file eksternal
Mulai visual Studio 2019 versi 16.10, Anda dapat menentukan aturan analisis dan perilaku yang berbeda untuk header eksternal. /external:I
Gunakan opsi , /external:env
, atau /external:anglebrackets
untuk menentukan direktori sebagai direktori "eksternal". File apa pun yang disertakan dengan menggunakan #include
dari direktori eksternal atau subdirektorinya dianggap sebagai header eksternal. Untuk informasi selengkapnya, lihat /external
(Diagnostik header eksternal).
Analisis kode menyediakan opsi ini untuk mengontrol analisis file eksternal:
/analyze:external-
Melompati analisis file header eksternal. Secara default, analisis kode menganalisis file header eksternal sama seperti file lainnya. /analyze:external-
Saat opsi diatur, analisis kode melewati file apa pun yang ditentukan sebagai eksternal, kecuali templat dari file eksternal. Templat yang ditentukan dalam header eksternal diperlakukan sebagai non-eksternal dengan menggunakan /external:templates-
opsi . Opsi /external:Wn
ini tidak memengaruhi analisis kode. Misalnya, analisis kode menganalisis file eksternal dan melaporkan cacat bahkan ketika /external:W0
ditentukan.
/analyze:external:ruleset
ruleset_files
Parameter ruleset_files
menentukan satu atau beberapa file ruleset yang dibatasi titik koma untuk digunakan untuk analisis file eksternal. Untuk informasi tentang ruleset, lihat bagian "Opsi untuk rulesets".
Ada variabel lingkungan (CAExcludePath
) yang menyediakan kemampuan serupa tetapi lebih sederhana untuk melewati analisis file di bawah direktori yang ditentukan dalam variabel lingkungan. Jika direktori ditentukan dalam /external:*
opsi dan dalam variabel lingkungan, direktori dianggap sebagai dikecualikan, dan /analyze:external*
opsi tidak akan berlaku untuk direktori tersebutCAExcludePath
.
Opsi log analisis
/analyze:autolog
[-
]
Bendera ini digunakan untuk mengaktifkan pembuatan file log analisis untuk setiap file sumber yang sedang dianalisis. File log sekarang dibuat secara default, sehingga bendera ini sebagian besar berlebihan.
Saat digunakan, ini mengubah ekstensi log default menjadi *.pftlog
alih-alih .xml
. Gunakan /analyze:autolog-
untuk menonaktifkan pengelogan ke file.
/analyze:autolog:ext
extension
Mengambil alih ekstensi default file log analisis, dan menggunakan extension
sebagai gantinya. Jika Anda menggunakan .sarif
ekstensi, file log menggunakan format SARIF alih-alih format XML default.
/analyze:log
log_path
Menentukan jalur log_path
file log alih-alih jalur file log yang dihasilkan secara otomatis. log_path
Ketika jalur memiliki garis miring terbelakang dan mengacu pada direktori yang ada, analisis kode membuat semua file log di direktori yang ditentukan. Jika tidak, log_path
menentukan jalur file. Jalur file menginstruksikan pengompilasi untuk menggabungkan log untuk semua file sumber yang dianalisis ke dalam file log yang ditentukan. Jika jalur file memiliki .sarif
ekstensi, file log menggunakan format SARIF alih-alih format XML default. Anda dapat mengambil alih perilaku ini dengan menggunakan opsi /analyze:log:format:*
ini.
Opsi format file log
Mulai dari Visual Studio 2019 versi 16.9, Anda dapat menentukan opsi format log yang berbeda untuk analisis kode.
/analyze:log:format:xml
Memaksa penggunaan format log XML tidak relevan dengan ekstensi file yang digunakan.
/analyze:log:format:sarif
Memaksa penggunaan format log SARIF tidak relevan dengan ekstensi file yang digunakan.
Opsi konten file log
Mulai dari Visual Studio 2019 versi 16.9, Anda dapat menentukan opsi konten log yang berbeda untuk analisis kode.
/analyze:sarif:analyzedfiles
[-
]
Menambahkan entri artefak file ke file log SARIF untuk file yang dianalisis yang tidak mengeluarkan peringatan. Pemadatan dinonaktifkan secara default. Artefak untuk file sumber dan untuk file yang memancarkan hasil selalu disertakan.
/analyze:sarif:configuration
[-
]
Menambahkan entri konfigurasi aturan untuk menentukan bagaimana pengguna mengesampingkan konfigurasi aturan default (dinonaktifkan secara default).
/analyze:log:compilerwarnings
Menambahkan cacat apa pun yang ditemukan mesin analisis, dan semua peringatan kompilator, ke file log analisis. Secara default, peringatan kompilator tidak disertakan dalam file log analisis. Untuk informasi selengkapnya tentang peringatan pengkompilasi selama analisis kode, lihat /analyze:only
opsi .
/analyze:log:includesuppressed
Menambahkan peringatan yang ditekan dan peringatan yang tidak tertekan ke file log analisis. Secara default, peringatan yang disembunyikan tidak disertakan dalam file log analisis. Jika file ruleset ditentukan untuk analisis, peringatan yang dinonaktifkan oleh file ruleset tidak disertakan dalam log bahkan ketika /analyze:log:includesuppressed
ditentukan.
Opsi ruleset
/analyze:projectdirectory
project_directory
Menentukan direktori proyek saat ini. Jika set aturan (atau item yang disertakan) adalah nama file, pengkompilasi terlebih dahulu mencari file di bawah yang ditentukan project_directory
. Jika tidak ditemukan, selanjutnya mencari yang ruleset_directories
ditentukan oleh /analyze:rulesetdirectory
, jika ada. Jika set aturan (atau item yang disertakan) adalah jalur relatif, pengkompilasi terlebih dahulu mencari file di bawah direktori proyek. Jika set aturan tidak ditemukan, maka akan terlihat di direktori kerja saat ini. Opsi ini tersedia mulai dari Visual Studio 2019 versi 16.9.
/analyze:rulesetdirectory
ruleset_directories
Menentukan daftar jalur pencarian ruleset yang dipisahkan titik koma. Jika set aturan (atau item yang disertakan) adalah nama file, maka pengkompilasi terlebih dahulu mencari file di bawah project_directory
yang ditentukan oleh /analyze:projectdirectory
, jika ada, diikuti oleh yang ditentukan ruleset_directories
. Opsi ini tersedia mulai dari Visual Studio 2019 versi 16.9.
/analyze:ruleset
ruleset_files
Menentukan satu atau beberapa file ruleset yang akan digunakan untuk analisis. Opsi ini dapat membuat analisis lebih efisien; mesin analisis mencoba mengecualikan pemeriksa yang tidak memiliki aturan aktif yang ditentukan dalam file ruleset sebelum berjalan. Jika tidak, mesin menjalankan semua pemeriksa yang diaktifkan.
/analyze:ruleset
ruleset_file
Menentukan file ruleset yang akan digunakan untuk analisis. Opsi ini dapat membuat analisis lebih efisien; mesin analisis mencoba mengecualikan pemeriksa yang tidak memiliki aturan aktif yang ditentukan dalam file ruleset sebelum berjalan. Jika tidak, mesin menjalankan semua pemeriksa yang diaktifkan.
File ruleset yang dikirim dengan Visual Studio ditemukan di %VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets
.
Contoh set aturan kustom berikut memberi tahu mesin analisis untuk memeriksa C6001 dan C26494, dan melaporkannya sebagai peringatan.
Anda dapat menempatkan file ini di mana saja selama Anda menentukan jalur lengkap dalam argumen.
Anda dapat menempatkan file ini di mana saja selama Anda menentukan jalur lengkap dalam argumen, atau di bawah direktori yang ditentukan dalam /analyze:projectdirectory
opsi atau /analyze:rulesetdirectory
.
<?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>
Secara default, ekstensi file untuk file ruleset adalah *.ruleset
. Visual Studio menggunakan ekstensi default saat menelusuri file ruleset. Namun, Anda dapat menggunakan ekstensi apa pun.
Untuk informasi selengkapnya tentang aturan, lihat Menggunakan seperangkat aturan untuk menentukan aturan C++ yang akan dijalankan.
Keterangan
Untuk informasi selengkapnya, lihat Analisis kode untuk ringkasan C/C++ dan Analisis kode untuk peringatan C/C++.
Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio
Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.
Pilih halaman properti Umum Analisis>Kode Properti>Konfigurasi.
Ubah satu atau beberapa properti Analisis Kode.
Pilih OK atau Terapkan untuk menyimpan perubahan Anda.
Untuk mengatur opsi analisis file eksternal di Visual Studio 2019 versi 16.10 dan yang lebih baru:
Buka kotak dialog Halaman Properti proyek.
Pilih halaman properti Properti>Konfigurasi C/C++>External Includes.
Atur properti:
Nonaktifkan Analisis Kode untuk Header Eksternal mengatur
/analyze:external-
opsi .Aturan Analisis untuk Header Eksternal mengatur
/analyze:external:ruleset path
opsi .
Pilih OK atau Terapkan untuk menyimpan perubahan Anda.
Untuk mengatur opsi pengkompilasi ini secara terprogram
- Lihat EnablePREfast.
Lihat juga
Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC