2016-04-11 49 views
0

Resharper, C++ kodunu analiz eder ve içe aktarılmamış sınıfları/işlevleri işaretler. Ayrıca Resharper sınıf/işlev bildirimleriyle dosyaları içe aktarmayı önerir.ReSharper, kullanılan dosyaya bağlı bağımlılıkları analiz eder - nasıl devre dışı bırakılır

Bununla ilgili bir sorun - Resharper her dosyayı ayrı ayrı analiz etmez, ancak bu dosyanın nasıl kullanıldığını göz önünde bulundurur.

Örnek:

test1.h 

#pragma once 
boost::filesystem::path path1; 

Genellikle bu dosya derlenebilir değil - sınıf boost::filesystem::path bilinmemektedir ve biz #include <boost/filesystem/path.hpp>

ithalat gerekir Ama biz ikinci dosya var:

Şimdi
test2.h 

#pragma once 

#include <boost/filesystem/path.hpp> 
#include "test1.h" 
boost::filesystem::path path2; 

herşey boost::filesystem::path, test1.h'dan önce gelir ve Resharperişaretlemek için durur çünkü Bilinmeyen olarak test1.h'da. Ama bu iyi değil - test1.h'u boost::filesystem::path'un alınamadığı farklı bir yerde kullanmaya çalışırsak hata alırız.

Bu dosyadaki yalnızca #import komutlarına dayanarak her dosyanın Resharper analiz bağımlılıklarına ihtiyacım var. Nasıl kurulur?

cevap

0

Bazen bir başlık, içerdiği bir .cpp dosyası bağlamında yalnızca anlamlıdır (örneğin, önceden derlenmiş üstbilgiler kullanıldığında veya üstbilgiden diğer başlıklara bağlı olduğunda), böylece bir dosyayı ayrıştırmak ve çözümlemek için R ++; corrsponding .cpp dosyasını bulun ve gerekli üstbilgiye ulaşılana kadar işleyin. Otomatik içe aktarma işlevselliği de dahil olmak üzere tüm analizler, sonuç olarak oluşturulmuş soyut sözdizimi ağacıyla çalışır - açıkladığınız davranışın nedeni budur.

Sadece bir .cpp dosyasının arabirimi olan birçok başlık için, üstbilgiyi .cpp dosyasına dahil edilen ilk dosya yapmak iyi bir fikirdir. Bu durumda, R ++ onu ayrıştırma bağlamı olarak seçer ve istenen otomatik içe aktarma davranışını elde edersiniz.

Eğer projeniz için çalışıyorsa, bağımsız dosyaları sanki başlık dosyalarını ayrıştırmak için bir seçenek eklemek olanaklı olabilir. Bu seçeneğin uygulanmasını istiyorsanız, lütfen R ++ 'nın issue tracker numaralı telefonunda bir istek oluşturun.