SGE Blog Yayınları

Coverity Kaynak Kod Analizi Aracı Kullanımı

Coverity Kaynak Kod Analizi Aracı Kullanımı

yazan Hasan Fatih Şimşek -
Number of replies: 0

A. Coverity Build İle Kullanım

a. Konfigurasyon Aşaması

Derleyici template olarak ya da statik şekilde ilgili yüklenmiş derleyicinin dizin yolu gösterilmek suretiyle seçilir.

( template kullanim )

cov-configure --gcc // GCC Compiler
cov-configure --msvc // Visual Code Compiler (C/C++ Compiler)
cov-configure --cs // C# Compiler
cov-configure --java // Java Compiler
( statik kullanım için veya diğer başka derleyicileri seçmek için bkz. Coverity Command Line Cheatsheet 2.txt )
...

b. Derleme Aşaması

Uygulama hangi derleyici ile geliştirilmekteyse cov-build komutuna argüman olarak o derleyici komutu ve bu derleme komutuna argüman olarak derlenecek dosya / dizin verilir (Not: Derleyici Ant, Maven,...,Visual Studio makinaya önceden yüklenmiş olmalı).

 - cov-build --dir .\dizin make all		   // GCC projesi için "c dosyasi derleyicisi" ve "tüm c dosyalar"
 - cov-build --dir .\dizin devenv.exe test.sln // Visual Studio projesi için "sln derleyicisi" ve "sln dosyasi"
// 
// Ayrıntı:
// Devenv.exe araci Visual Studio'yu açar ve sol alt status bar'da parsing 
// işlemi başlar. Parsing Done olduktan sonra Visual Studio ortamında Buil // yapılır. Build sorunsuz bittikten sonra Visual Studio ortamı kapatılır // ve böylece cov-build çalışması tamamlanır. // // Uyarı: // Devenv araci exe hali kullanılmalıdır. Örn; "C:\Program Files (x86)\ // Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe". Aksi takdirde // cov-build çalısması anlık durur ve işlem başarısız olur. - cov-build --dir .\dizin mvn clean package // MVN ile derlemeli Java projesi için "mvn derleyicisi" ve // "komple bulunulan dizindeki java dosyalar"

c. Analiz Aşaması

Uygulama projesi kaynak kodları ve içerisinde derlenmiş binary'leri açıklık analizine tabi tutulur.

 - cov-analyze --dir .\dizin --aggressiveness-level high --security	// --security: C ve C++
// --webapp-security: C#, Java, ...
// --android-security: Android
// Daha fazlası için: cov-analyze --list-checkers

Not: "--aggressiveness-level high" eklemesi ile tarama derinliği arttırılır. Süre artar. Onun yerine "--enable-audit-mode" eklemesi ile --aggressiveness-level high yapılır ve ilaveten coverity'de tanımlı kalan diğer tüm güvenlik sınama adımları analize dahil edilir.

d. Raporlama Aşaması

Uygulama kaynak kodları ve binary'leri beraber analizi sonrası bulgular rapor portaline basılır. Öncelikle rapor portalinde Configuration sekmesinden Projects/Streams seçilir ve bir proje (klasör) oluşturulur, içerisine ise bir stream olusturulur. Stream'in ismi raporlama komutunda kullanacağıımız isim olacaktır. Örn; + Streams , İsim: XYZAppResults. Açıklıkları rapor portaline basılır.

// Coverity Client & Coverity Server "Ayrı" Makinalardayken
 - cov-commit-defects --dir .\dizin --host RemoteServerIPAddress --dataport 9090 --user admin --password Parola123 --stream XYZAppResults
ya da
// Coverity Client & Coverity Server "Aynı" Makinadayken
 - cov-commit-defects --dir .\dizin --host localhost --port 8080 --user admin --password Parola123 --stream XYZAppResults

e. Görüntüleme Aşaması

http://IP:8080
veya
http://localhost:8080
admin
Parola123

Giriş yapılır ve sol yukarıdaki proje klasörlerinden önceden oluşturulan projeye (klasöre) daha sonra içerisindeki stream'e tıklanır. Böylece ilgili taramanın bulguları ekrana gelir.

B. Coverity File System Capture (Buildless) İle Kullanım

=========================================================

Coverity File System Capture (Buildless) Hakkında

Şu an için Buildless Capture (Derlemeden Dosyaları Yakalama) SADECE C# (sadece .Net Core Projeleri), 

Java/JSP (sadece Maven/Gradle Projeleri) ve Javascript (npm, yarn, bower projeleri) için kullanılabilir.

=========================================================

Coverity Scanner aracında daha önceden derlenmiş ve uygulama proje kök klasörü altında binary'leri yer almakta olan uygulama kaynak kodları ve binary'lerini bu proje kök klasörünü hedef göstererek açıklık taraması yapılabilir. Bunun için coverity scanner'in cov-build araci --no-command ile kullanılabilir ve derleme yapılmaksızın dizin / kaynak dosya taraması gerçekleştirilebilir.

a. Konfigurasyon Aşaması

( template kullanim )
cov-configure --config test.xml --javafs // Java File System
cov-configure --config test.xml --javascript // Javascript File System
cov-configure --config test.xml --php // PHP File System
cov-configure --config test.xml --typescript // Type Script File System
cov-configure --config test.xml --android // Android Java File System ...

( not: Bu komut ile konfigurasyon dosyasi olustugunda konfigurasyon dosyasi bir yere taşınnmamalı ve olduğu yerde kalmalı.)

( Statik konfig kullanim için veya diğer başka derleyici modeli seçmek için; bkz. Coverity Command Line Cheatsheet 2.txt )

b. File System Tarama Aşaması

cov-build --dir ..\ --no-command --fs-capture-search .\
ya da
cov-build --config test.xml --dir ..\ --no-command --fs-capture-search .\

Not: --dir parametresi intermediate directory'nin hangi konumda konumlanacağını gösterir. "File System" taraması seçeneği kullanıldığında bu konum proje kök dizini alıinda (kaynak dosya aranacak yerlerde) olmamalıdır. Aksi takdirde 

"Path 'C:/Users/Administrator/Desktop/uygulamaAdi - Maven' looks like an idir (intermediate dir). Skipping filesystem 

capture on it." 

hatası alınır ve file system'de kaynak dosya taraması iptal olur. Bu nedenle file system ile tarama işleminde intermediate directory'yi proje kök dizini dışında bir yerde konumlamalıdır. Örn; bir üst dizinde: "..\"

Not2: --no-command parametresi derleyici komut programi girilmeyecek (derleme islemi yapilmayacak) demektir.

Not3: --fs-capture-search parametresi gösterilen dizin ve altindaki tüm dizinlerde cov-configure'da belirtilen programlama dilinde kaynak dosya arayacak demektir.

c. Analiz Aşaması

cov-analyze --config test.xml --dir ..\ --aggressiveness-level high --security	// --security: C ve C++
// --webapp-security: C#, Java, ...
// --android-security: Android
// (empty, yani default) : javascript, ruby, python, swift, ...
// Daha fazlası için: cov-analyze --list-checkers
ya da 
cov-analyze --dir ..\ --aggressiveness-level high --security // --security: C ve C++
// --webapp-security: C#, Java, ...
// --android-security: Android
// (boş bırakma, yani default) : javascript, ruby, python, swift, ...
// Daha fazlası için: cov-analyze --list-checkers

Not: "--aggressiveness-level high" eklemesi ile tarama derinliği arttırılır. Süre artar. Onun yerine "--enable-audit-mode" eklemesi ile --aggressiveness-level high yapılır ve ilaveten coverity'de tanımlı kalan diğer tüm güvenlik sınama adımları analize dahil edilir.

d. Raporlama Aşaması

// Coverity Client & Coverity Server "Ayrı" Makinalardayken
 - cov-commit-defects --dir .\dizin --host RemoteServerIPAddress --dataport 9090 --user admin --password Parola123 --stream XYZAppResults
ya da
// Coverity Client & Coverity Server "Aynı" Makinadayken
 - cov-commit-defects --dir .\dizin --host coverity --port 8080 --user admin --password Parola123 --stream XYZAppResults

e. Görüntüleme Aşaması

http://IP:8080
veya
http://localhost:8080

admin
Parola123

Giriş yapılır ve sol yukarıdaki proje klasörlerinden önceden oluşturulan projeye (klasöre) daha sonra içerisindeki stream'e tıklanır. Böylece ilgili taramanın bulguları ekrana gelir.

C. Coverity File System Capture (Buildless) İle Kullanım 2

=========================================================

Coverity File System Capture (Buildless) 

Şu an için Buildless Capture (Derlemeden Dosyaları Yakalama) SADECE C# (sadece .Net Core Projeleri), 

Java/JSP (sadece Maven/Gradle Projeleri) ve Javascript (npm, yarn, bower projeleri) için kullanılabilir.

=========================================================

Coverity Scanner aracında daha önceden derlenmiş ve uygulama proje kök klasörü altında binary'leri yer almakta olan uygulama kaynak kodları ve binary'lerini bu proje kök klasörünü hedef göstererek açıklık taraması yapılabilir. Bunun için coverity scanner'in yan araci cov-capture kullanılır ve klasörden capture yaparak açıklık taraması başlatılabilir.

a. Konfigurasyon Aşaması

( template kullanım )
cov-configure --gcc // GCC Compiler
cov-configure --msvc // Visual Code Compiler (C ve C++)
cov-configure --cs // C# Compiler
cov-configure --java // Java Compiler
cov-configure --android // Android Java (File System)
( statik kullanım için veya diğer başka derleyici modeli seçmek için bkz. Coverity Command Line Cheatsheet 2.txt )
...

b. Capture Aşaması

Uygulama kaynak kodları (ve alt dizinlerde oluşmuş binary'leri) yer alan proje kök klasörü cov-capture aracına verilir. Böylece bir sonraki aşama olan analiz işlemi için klasör capture edilir.

cov-capture --language java --dir .\ --project-dir .\

Not: --language parametresi ile hedef gösterilen klasördeki projenin hangi programlama dilinde kaynak dosyalar içerdigi belirtilmelidir, böylece genel sırayla her dilden tarama ve tespit denemesi yapılmaz ve "bazı projeler dahil edilemedi" tarzı hata ile sonuçlanan capture işlemi olmaz.

Not2: Bu aşamada proje kök klasörü altında emit\ klasörünün oluşmus olması ve içerisinde "COVERITY" klasörü ve "version"  dosyası oluşmuş olması gerekir. Eger bunlardan biri oluşmazsa bir sonraki aşamada cov-analyze yapılamaz. 

c. Analiz Aşaması

Capture edilen klasör altında kaynak kod analiz işlemi başlatılır.

- cov-analyze --dir .\dizin --aggressiveness-level high --security		// --security: C ve C++
// --webapp-security: C#, Java, ...
// --android-security: Android
// (boş bırakma, yani default) : javascript, ruby, python, swift, ...
// Daha fazlasi için: cov-analyze --list-checkers

Not: "--aggressiveness-level high" eklemesi ile tarama derinliği arttırılır. Süre artar. Onun yerine "--enable-audit-mode" eklemesi ile --aggressiveness-level high yapılır ve ilaveten coverity'de tanımlı kalan diğer tüm güvenlik sınama adımları analize dahil edilir.

d. Raporlama Aşaması

Uygulama kaynak kodları ve binary'leri beraber analizi sonrası bulgular rapor portaline basılır. Öncelikle rapor portalinde Configuration sekmesinden Projects/Streams seçilir ve bir proje (klasör) oluşturulur, içerisine ise bir stream oluşturulur. Stream'in ismi raporlama komutunda kullanacagımız isim olacaktır. Örn; + Streams , İsim: XYZAppResults. Açıklıkları rapor portalıne basılır.

// Coverity Client & Coverity Server "Ayrı" Makinalardayken
- cov-commit-defects --dir .\dizin --host RemoteServerIPAddress --dataport 9090 --user admin --password Parola123 --stream XYZAppResults
ya da
// Coverity Client & Coverity Server "Aynı" Makinadayken
- cov-commit-defects --dir .\dizin --host localhost --port 8080 --user admin --password Parola123 --stream XYZAppResults

e. Görüntüleme Aşaması

http://IP:8080
veya
http://localhost:8080

admin
Admin!23456

Giriş yapılır ve sol yukarıdaki proje klasörlerinden önceden oluşturulan projeye (klasöre) daha sonra içerisindeki stream'e tıklanır. Böylece ilgili taramanın bulguları ekrana gelir.

EK. Coverity .NET Build'de Dikkat Edilecek Hususlar

a) Sln Dosyalarındaki Versiyon Header'ı ve Cov Emit Hakkında

Bazen cov-build'e sln dosyalarındaki versiyon header'larının gösterdiği visual studio sürümünün devenv.exe'si ile derleme yapıldığında coverity emit işlemi başarısız olabiliyor. Direk sln dosyasına çift tıklayarak götürdüğü visual studio sürümünün devenv.exe'si ile derleme yapıldığında ise cov-build emit işlemini başarılı yapabiliyor.

b) C/C++ ve C# Beraber Yer Alan .NET Projeleri Hakkında

Eger .NET projesi hem C/C++ hem de C# proje dosyalari içeriyorsa aynı proje iki kopyası oluşturulur. Kopyalardan biri tarama konfigurasyon olarak c# olur, diğeri tarama konfigurasyon olarak C/CPlusPlus olur. Örn;

	// CSharp için Ayni Proje Tarama
cov-configure --config test.xml --cs
cov-build --config test.xml --dir .\ "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" User.sln
cov-analyze --config test.xml --dir .\ --aggressiveness-level high --webapp-security
// CPlusPlus için Ayni Proje Tarama
cov-configure --config test.xml --msvc
cov-build --config test.xml --dir .\ "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" User.sln
cov-analyze --config test.xml --dir .\ --aggressiveness-level high --security

Uyari: İki ayrı klasör ve iki ayrı konfig dosyası ile tarama yapılıyor. Çünkü iki tür (cplusplus, ve csharp) tarama, merkezi konfig ile yapıldığında ilk başta hangi türden tarama yapılmışsa ikinci taramayı da o türden yapıyor. 

c) Sln Projelerdeki Javascript ve HTML Dosyalar Hakkında

.NET projeler javascript (jquery, typescript,... gibi) dosyalar içermekte. Coverity ile taramalar bu teknolojideki dosyaları taramak için tekrarlanmalı.

	// CSharp için Ayni Proje Tarama
cov-configure --config test.xml --cs
cov-build --config test.xml --dir .\ "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe" User.sln
cov-analyze --config test.xml --dir .\ --aggressiveness-level high --webapp-security
// Javascript ve türevleri, HTML,... Tarama 
cov-configure --config test.xml --javascript
cov-build --config test.xml --dir ..\ --no-command --fs-capture-search .\ // javascript, html için derleme gerekmez.
// bu nedenle --no-command parametresi kullanılır.
cov-analyze --config test.xml --dir ..\ --aggressiveness-level high // Tarama metodu olarak (boş bırakma, yani default) 
// : javascript, ruby, python, swift, ...
not: -javascript default'ta ayrıca html leri de taramakta. İlave olarak --no-html parametresi eklenerek
bu fonksiyonellik kapatılabilmekte. --javascript ayrıca js ve türevi teknolojilerin örneğin config dosyalarını 
da taramakta. İlave olarak --no-capture-config-files ile bu fonksiyonellik kapatılabilmekte. Kapatmak yerine
default'ta taratarak her türlü tarama metodunu aktif olarak kullanabiliriz. kaynak: cov-configure man dosyası.

Uyarı: İki ayrı klasör ve iki ayrı konfig dosyası ile tarama yapılıyor. Çünkü iki tür (csharp, ve javascript) tarama, merkezi konfig ile yapıldığında ilk bşsta hangi türden tarama yapılışssa ikinci taramayı da o türden yapıyor. 

d) Hatalı Modülleri Ignore Etme Ve Geri Kalanla Hatasız Derleyebilme Hakkında

Visual Studio ortamında derlemede hata veren modüller sağ boşlukta sıralı modüller içerisinden seçilip Unload yapılarak derleme tekrarlanır ve derleme sonucu binary'ler elde edebilebilir.

EK. Coverity .NET Uygulamaları (Örn; Csharp) Taramada ASPX Dosyalar Hakkında

ASP.NET Uygulamalar cov-build'de Visual Studio IDE derlemesi sonrası ve IDE kapandıktan sonra coverity tarafından saptanmakta ve bu doğrultuda otomatikmen aspnet_compiler çağrısı yapılıp aspx,... dosyaların analizi ilave edilmekte ve cov-build çıktısına bu adımlar sırasıyla yansımakta.

Örnek Olarak WebGoat.NET C# Uygulaması Tarama

WebGoat.NET için örneğin cov-build ile derleme yaparken c# derlemesi yapılmakta ve analiz c#'lara olmakta. Fakat cov-build'de derleme ortamı (IDE) kapatıldığında coverity, uygulamanın asp.net projesi olduğunu saptamakta ve aspnet_compiler ile aspx,... dosyalar da analize dahil olmakta. 

> cov-configure --config test1.xml --cs
> cov-build --dir .\ --config test1.xml "D:\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" WebGoat.NET.sln

Çıktı

Coverity Build Capture (64-bit) version 2018.12 on Windows Server 2016 Server Datacenter (full installation), 64-bit (build 14393)
Internal version numbers: c56d2f65de p-pacific-push-35824
An ASP.NET web application build has been detected. (****)
Attempting to compile one or more web applications using aspnet_compiler. (****)
Web site location: C:/Users/Administrator/Desktop/WebGoat.NET-master/WebGoat (****)
1 web application successfully compiled using aspnet_compiler. (****)
Extra web application compilation time: 00:02:23 seconds
72 compiled C# template files captured: (****)
    71 aspx files (****)
    1 master files
Emitted 181 C# compilation units (100%) successfully (****)
181 C# compilation units (100%) are ready for analysis (****)
The cov-build utility completed successfully.
> cov-analyze --dir .\ --aggressiveness-level high --webapp-security
> cov-commit-defects ...

Böylece webgoat asp.net uygulamasındaki açıklıklar raporlanabilir

EK. Coverity Java Build'de Dikkat Edilecek Husus

a. Coverity Build Yalnızca 64 Bit JDK'ları Destekliyor. O nedenle Sadece Projeye Özgü kurulacak JDK'lar mutlaka 64 Bit olmalı.

Hata: 

(32 bit kullanıldığında)

Build Success, Fakat Emit Alınamadı Hatası

Çözüm:

Coverity 64 bitlik sistemde kurulu olduğundan 32 bitlik jdk ile derleme sırasında build tamam diyor ama emit oluşturamıyor. Uyarı olarak coverity 64 bit üzerinde 32 bit jdk desteklemiyor diyor. Bu nedenle her uygulama hangi jdk sürümündeyse onun 64 biti kurulmalı.

b. 64 Bit JDK kurulumu sonrası 

JAVA_HOME uygulamanın çalışıyor olduğu JDK sürümünü göstermeli, M2_HOME ilgili maven sürümü dizini göstermeli (Maven Projeler İçin), PATH'den jdk dizinindek bin\ ve maven dizinindeki bin\ yolları gösterilmeli,

Bilgi: Uygulamanın beraber çalıştığı JDK sürümünü maven projeler için

pom.xml'lerindeki target etiketlerinden tespit edilebilir. 

<target>1.8</target> gibi.

ve bu ayarlar sonrası sistem tamamen restar'lanmalı. Set edilen variable'lar sorunsuz mu test edilmeli.

java -version
mvn -version

Ancak bu adımlardan sonra coverity aşamasına geçilmeli.

c. Derlemede sıkıntı verenler pom.xml <modules> 'ten yorum yaparak atlanabilir.

pom.xml'den <modules> altındaki ilgili modül <!-- ve --> arasına alınabilir. Böylece derleme başarılı tamamlanabilir.

(!) Uyarı

JAVA_HOME eğer uygulamanın çalışır olduğu JDK sürümü değil de başka JDK sürümünde olursa cov-build ile derleme olur, gösterir. Fakat cov-build için derleme olmaz. Hiçbir kaynak dosya emit edilmez. Dolayısıyla bir sonraki cov-analyze aşaması uygulanamaz. Ne zaman JAVA_HOME uygulamanın çalışıyor olduğu JDK sürümüne geçirilirse CMD Ekranını aç kapa yapıp tekrar cov-build denildiğinde derleme zaman alır şekilde kendini gösterir ve cov-analyze aşamasına geçilebilir. Örn JAVA_HOME doğru sürümü gösterir hale getirildiğinde cov-build aşağıdaki gibi sonuçlanır:

Output:
Emitted 225 Java compilation units (100%) successfully
225 Java compilation units (100%) are ready for analysis
The cov-build utility completed successfully.

d. Java Projelerdeki Javascript ve HTML Dosyalar Hakkında

Java projeler javascript (jquery, typescript,... gibi) dosyalar içermekte. Coverity ile taramalar bu teknolojideki dosyaları taramak için tekrarlanmalı.

	// Java için Aynı Proje Tarama
cov-configure --config test.xml --java
cov-build --config test.xml --dir .\ mvn clean package
cov-analyze --config test.xml --dir .\ --aggressiveness-level high --webapp-security
// Javascript ve türevleri, HTML,... Tarama 
cov-configure --config test.xml --javascript
cov-build --config test.xml --dir ..\ --no-command --fs-capture-search .\ // javascript, html için derleme gerekmez.
// bu nedenle --no-command parametresi kullanılır.
cov-analyze --config test.xml --dir ..\ --aggressiveness-level high // Tarama metodu olarak (boş bırakma, yani default) 
// : javascript, ruby, python, swift, ...
not: -javascript default'ta ayrıca html leri de taramakta. İlave olarak --no-html parametresi eklenerek
bu fonksiyonellik kapatılabilmekte. --javascript ayrıca js ve türevi teknolojilerin örneğin config dosyalarını 
da taramakta. İlave olarak --no-capture-config-files ile bu fonksiyonellik kapatılabilmekte. Kapatmak yerine
default'ta taratarak her türlü tarama metodunu aktif olarak kullanabiliriz. kaynak: cov-configure man dosyası.

Uyarı: İki ayrı klasör ve iki ayrı konfig dosyası ile tarama yapılıyor. Çünkü iki tür (java, ve javascript) tarama, merkezi konfig ile yapıldığında ilk başta hangi türden tarama yapılmışsa ikinci taramayı da o türden yapıyor. 

EK. Coverity Hatalar ve Çözümler

a) Hata: "Cannot configure both build and file system capture for Java."

Çözüm:

cov-config ile custom config dosyası oluşturarak sorun çözülür.

cov-config --config test.xml --java
cov-build --config test.xml ...
cov-analyze --config test.xml ...
cov-commit-defects ...

b) Coverity Build Yalnızca 64 Bit JDK'ları Destekliyor

Hata: Coverity does not support 32 bit Java on 64 bit system.

Çözüm:

Java uygulamalar coverity'de build ile taranırken java'nın (jdk'nın) 64 bit olması zorunlu. Coverity 64 bitlik sistemde kurulu olduğundan 32 bitlik jdk ile derleme sırasında tamam diyor ama emit oluşturamıyor. Uyarı olarak coverity 64 bit üzerinde 32 bit jdk desteklemiyor diyor. Bu nedenle her uygulama hangi jdk sürümündeyse onun 64 biti kurulmalı.

c) Cov-build Visual Studio Devenv.exe Derlemesi Başlarken "Failed to acquire lock" Hatası

Hata:

"Failed to acquire lock "/home/xlab/scan/coverity/idirs/.../emit-db.creation-lock". Unable to protect emit DB creation"

Çözüm:

Emit dizinini sil ve --dir dizinini bir üst dizin gösterecek şekilde kullan.

cov-build --config test1.xml --dir ..\ "C:\...\devenv.exe" Deneme.sln

Bu şekilde failed to acquire lock hatası gider ve derleme aşamasına geçilir. 

d) Visual Studio'da Derleme Sırasında Dizin Uzunluğu Çok Olunca Veren LongPath Hatası

Hata: 

"the specified path, file name, or both are too long. The fully qualified file name must be 

less than 260 characters, and the directory name must be less than 248 characters."

Çözüm:

Geçici olarak proje kök klasörü masaüstüne taşınabilir ve oradan visual studio ile derleme yapılabilir. Böylece dizin isimleri kısalacağından longpath hatası almadan derleme tamamalanabilir.

Not: Ayrıca yine dizin ismi uzun olursa C:\ kök dizinine taşıma ve derleme yapılabilir.

e) Cov-Build'i --no-command ile Kullanırken (File System Capture halde kullanırken) No Emit Vermesi Hatası

Çözüm:

cov-build 'i --no-command ile kullanırken --dir ve --config değerleri kök klasörün dışında (örn; yukarısında) yer almalı. Diğer türlü emit işlemi gerçekleşemiyor. 

Dışarıda belirtildiğinde emit gerçekleşiyor.

EK. Javascript, HTML,... Taramalar Hakkında

Projeler Javascript, HTML gibi dosyalar içermekte. Coverity ile taramalar bu teknolojideki dosyaları taramak için tekrarlanmalı:

[*] Uyarı:

javascript, html, typescript, vs... 'ler fs capture ile taranmakta

olduğundan emit dir dizini proje içerisinde değil, bir üst dizininde 

olmalı. --dir ..\

// JS, HTML,.. Tarama (Metot 1)
> cov-configure --config test.xml --javascript
> cov-build --config test.xml --dir ..\ --no-command --fs-capture-search .\
(veya spesifik çalışmak için javascript library'lerinin olduðu dizin gösterilir ve tarama öyle gerçekleþtirilir. not: Bu þekilde html'ler vs. atlanmýþ olur. Dahil etmek için ilave bir tane daha --fs-library-path kullanýlýp bu sefer de html için dizin gösterilebilir)
// JS, HTML,... Tarama (Metot 2)
> cov-configure --config test.xml --javascript --fs-library-path ".\path\to\javascript\dir"
> cov-build --dir ..\ --config test.xml --no-command --fs-capture-search .\

[*] Uyarı 2:

Default olarak --javascript taramalarında jquery kütüphaneleri '//

jquery[^//]*[.]js$' pattern'ı ile dışlanmaktalar)


EK. Coverity Servisinin Sistemde Kullandığı Port Numaraları 

Coverity sistemde 5 portu kullanmaktadır.

Veritabanı portu: Gömülü PostgreSQL'in Kullandığı Port.

[5432]

HTTP portu: Kullanıcıların Web Tarayıcı Üzerinden ve Web Servis İstemcileri Üzerinden Coverity Connect'e Eriştikleri Port 

[8080]

HTTPS portu: Güvenlik Dolayısıyla Https Kullanıldığında.

[8443]

Commit port: Derleme ve analiz makineleri sonuçları Coverity Connect'e yollanırken kullanılan port

[9090]

Kontrol port: Dahili Sunucu İletişimi İçin Kullanılan Port.

[8005]


EK. Visual Studio Komut Satırı Derleme Aracı Varsayılan Konumları

VS2010

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe

VS2012

C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\VSWinExpress.exe

VS2013

C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe

VS2015

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\devenv.exe

VS2017

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe

VS2019

C:\Program Files (x86)\Microsoft Visual Studio 2019\2019\Community\Common7\IDE\devenv.exe


Kaynaklar

https://community.synopsys.com/s/article/Error-Failed-to-acquire-lock-when-running-cov-build

https://community.synopsys.com/s/topic/0TO34000000QBYnGAO/file-system-capture-detecting

https://community.synopsys.com/s/question/0D53400004UDgNLCA1/what-is-buildless-capture-in-coverity-static-analysis

https://community.synopsys.com/s/article/Coverity-support-for-ASP-NET

https://community.synopsys.com/s/question/0D53400003tHDqfCAG/which-port-number-does-coverity-use-when-i-try-to-install-other-service-it-said-that-8080-port-is-occupied-by-other-service-i-guess-that-coverity-may-use-this-port-number

https://community.synopsys.com/s/article/How-to-Find-or-Change-Port-Assignments-in-Coverity-Connect

2959 kelime