Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Varsayılan olarak, işlem hattı kurulumunuzda belirtilen özel bir yapılandırma dosyanız yoksa CodeQL kodunuzu analiz etmek için sorgu paketini çalıştırır security-extended . Belirli güvenlik açıklarını ve hataları bulmak için kendi sorgularınızı yazmak için özel CodeQL sorgularını kullanabilirsiniz. Ayrıca CodeQL'in varsayılan çözümlemesini değiştirmek için özel bir yapılandırma dosyası oluşturmanız gerekir.
Mevcut özel sorguları bulmak veya kendi özel sorgunuza katkıda bulunmak için bkz . CodeQL'e Katkıda Bulunma.
Özel sorgularla analiz
Özel sorguyla başlamanın en hızlı yolu, bir sorgu yazmak ve bunu yerel Azure DevOps deponuza kaydetmektir. Özel sorgunun ayrıntılarını ihtiyacınıza göre özelleştirebilirsiniz, ancak en azından bir kural kimliği olmalıdır. Kendi CodeQL sorgunuzu yazma hakkında daha fazla bilgi için bkz . CodeQL sorguları yazma. Ayrıca birden çok sorguyu bir sorgu paketinde paketleyebilir veya başkaları tarafından yayımlanan paketleri kullanabilirsiniz. Daha fazla bilgi için bkz . CodeQL paketlerini yayımlama ve kullanma.
Özel yapılandırma dosyası kullanma
Özel yapılandırma dosyası, CodeQL'in kodunuz üzerinde çözümlemesi sırasında çalıştırılacak sorguları yönetmenin bir yoludur. Çalıştırılacak daha fazla sorgu veya sorgu paketi belirtebilir ve varsayılan CodeQL sorgularını değiştirebilir veya devre dışı bırakabilirsiniz.
Eklemek istediğiniz belirli bir sorguyu eklemek için, sorguyu deponuzdaki sorgu dosyasının (.ql) konumunun adını ve yolunu belirtin.
Eklemek istediğiniz belirli bir paketi eklemek için paket adını belirtin. Yapılandırma dosyanızda çalıştırılacak herhangi bir sayıda CodeQL sorgu paketi belirtebilirsiniz.
Sonraki adım bir qlpack.yml dosya oluşturmaktır. Bu dosya CodeQL paketini ve bu paketle ilgili bilgileri bildirir. ile aynı dizindeki (veya alt dizindeki) qlpack.yml tüm *.ql dosyalar paketin bir parçası olarak kabul edilir.
İpucu
Yapılandırma dosyasındaki packs filtresi, GitHub'da barındırılan depolardan paketleri indirmeyi destekler, ancak queries filtresi desteklemez.
Paket GitHub'da özelse, görev aracılığıyla AdvancedSecurity-Codeql-Init@1 ortam değişkeni ve değişken adı olarak GITHUB_TOKENbir GitHub erişim belirteci sağlamanız ve belirtecin kapsamının olması read:packagesgerekir.
Aşağıda örnek bir yapılandırma dosyası verilmiştir:
name: "Run custom queries"
# When using a configuration file, if you do not disable default queries,
# then the default CodeQL queries in the `code-scanning` query suite will also execute upon analysis.
disable-default-queries: true
# To reference local queries saved to your repository,
# the path must start with `./` followed by the path to the custom query or queries.
# Names for each query referenced is optional.
queries:
- name: Use security-extended query suite
uses: security-extended
- name: Use local custom query (single query)
uses: ./customQueries/javascript/FindTestFunctions.ql
- name: Use local custom query (directory of queries)
uses: ./customQueries/javascript/MemoryLeakQueries
packs:
- mygithuborg/mypackname
paths:
- src
paths-ignore:
- src/node_modules
- '**/*.test.js'
query-filters:
- include:
kind: problem
- include:
precision: medium
- exclude:
id:
- js/angular/disabling-sce
- js/angular/insecure-url-allowlist
İpucu
Yapılandırma dosyası belirtimleri görevin işlem hattı düzeyindeki yapılandırmalarını yoksayar ve öncelik kazanır AdvancedSecurity-Codeql-Init@1 .
includepaths / ignorepaths yoksayılır veya varsa paths/paths-ignore , içindeki değerlerle paths/paths-ignoreüzerine yazılır.
querysuite veya yapılandırma dosyasında belirtilen queries packs değerlerle üzerine yazılır.
Herhangi bir özel sorgu kullanıyorsanız, özel sorgularınızın dizinine yerleştirilen bir örnek qlpack.yml aşağıda verilmiştir:
version: 1.0.1
dependencies:
codeql/javascript-all: "*"
codeql/javascript-queries: "*"
değişkeni, dependencies bu paketin tüm bağımlılıklarını ve bunların uyumlu sürüm aralıklarını içerir. Her bağımlılık bir CodeQL kitaplık paketi olarak scope/name başvurulur. öğesini tanımlarken dependencies, sorgunuzun qlpack.yml analiz edebildiği dili belirleyen çekirdek dil paketlerinden birine (örneğin JavaScript, C#, Ruby vb.) bağlıdır.
Yapılandırma dosyanızla ilgili daha ayrıntılı öneriler ve yapılandırma seçenekleri için bkz . Kod tarama veya kurulum için qlpack.yml gelişmiş kurulumunuzu özelleştirme, bkz . CodeQL paket yapısı.
Yapılandırma dosyanızı aldıktan sonra CodeQL analizini çalıştıran işlem hattınızı yeni dosyanızı kullanacak şekilde özelleştirmeniz gerekir. Yapılandırma dosyasına işaret eden örnek bir işlem hattı aşağıda verilmiştir:
trigger: none
pool:
vmImage: windows-latest
# You can either specify your CodeQL variables in a variable block...
variables:
# `configfilepath` must be an absolute file path relative to the repository root
advancedsecurity.codeql.configfilepath: '$(build.sourcesDirectory)/.pipelines/steps/configfile.yml'
# Or you can specify variables as variables for the task. You do not need both definitions.
steps:
- task: AdvancedSecurity-Codeql-Init@1
displayName: Initialize CodeQL
inputs:
languages: 'javascript'
loglevel: '2'
configfilepath: '$(build.sourcesDirectory)/.pipelines/steps/configfile.yml'
# If downloading a pack from GitHub,
# you must include a GitHub access token with the scope of `read:packages`.
env:
GITHUB_TOKEN: $(githubtoken)
- task: AdvancedSecurity-Codeql-Analyze@1
displayName: Perform CodeQL Analysis