Nasıl kod asla kullanılan öğrenebilir miyim? | Netgez.com
SORU
27 Ocak 2011, PERÅžEMBE


Nasıl kod asla kullanılan öğrenebilir miyim?

Kullanılmayan kod kaldırmak gerekiyor eski C kodu var. Sorun kod tabanı büyük olmasıdır.

Nasıl hiç kullanmıyorum denilen bulabilirim?

CEVAP
27 Ocak 2011, PERÅžEMBE


Kullanılmayan kod iki çeşidi vardır:

  • yerel bir tanesi, bazı iÅŸlevler bazı yolları veya deÄŸiÅŸken kullanılmayan (ya ama yazılı ama asla okumak gibi anlamlı bir ÅŸekilde kullanılır)
  • küresel bir: asla çaÄŸrılan fonksiyonlar, asla eriÅŸilen genel nesneler

İlk tür, iyi bir derleyici yardımcı olabilir:

  • -Wunused (, Clang KİK) kullanılmayan deÄŸiÅŸkenler hakkında uyarmak gerekir, Çınlama kullanılmayan Çözümleyicisi hatta hiç kullanılmamış olsa bile) okumak deÄŸiÅŸkenler hakkında uyarmak için artan olmuÅŸtur.
  • -Wunreachable-code (Eski GCC, removed in 2010) Hiç (erken döner ya da her zaman doÄŸru deÄŸerlendirmek koÅŸulları ile olur) eriÅŸilen yerel engeller konusunda uyarmak gerekir
  • derleyici genellikle hiçbir özel durum olacağını ispat edemez çünkü catch kullanılmayan blokları hakkında uyarmak için biliyorum seçeneÄŸi yoktur.

İkinci tür, çok daha zor. Statik gerektirir bütün programı analizi, ve olsa bile, bağlantı zaman optimizasyon olabilir aslında kaldırmak ölü kod, uygulama programı olmuştur çok şekil değiştirdin. kez gerçekleştirilen bu neredeyse imkansız iletmek anlamlı bilgiler için Kullanıcı.

Bu nedenle iki yaklaşım vardır:

  • Bu teorik bir statik analiz kullanmaktır. Tüm kodu aynı anda çok detaylı bir ÅŸekilde incelemek ve tüm akış yolunu bulacak bir yazılım. Pratikte burada iÅŸe yarayacağını bilmiyorum.
  • Bu pragmatik bir sezgisel, kullanımı: kod kapsamı aracı (GNU zincir gcov. kullanın Özel bayraklar düzgün çalışması) için derleme sırasında geçirilmesi gerektiÄŸini unutmayın. Çalıştırdığınız kod kapsama aracı ile çok iyi bir takım çeÅŸitli giriÅŸ (birim-testleri veya olmayan regresyon testleri), ölü kod mutlaka içinde unreached Kodu... ve böylece baÅŸtan burada.

Konuyla çok ilgilendi, ve aslında kendi başına bir araç bulmak zaman eğilimi varsa, Çınlama kitaplıkları böyle bir alet yapmak kullanmanızı öneriyorum.

  1. Bir AST almak için Çınlama kitaplığı (soyut sözdizimi ağacı) kullanın
  2. Giriş noktalarını İşaretle-ve-sweep analizi ileri gerçekleştirin

Çınlama senin için kodu ayrıştırmak ve tekrar yükleme çözümlemesi gerçekleştirmek için, C dil kuralları ile uğraşmak zorunda kalmazsınız, ve eldeki sorun konsantre mümkün olacak.

Ancak tekniği olamaz böyle bir sebep olamaz code üçüncü taraf tarafından çağrılan olabilir beri kullanılmayan sanal geçersiz kılar belirlemek.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Electro Posé

    Electro PosÃ

    21 ÅžUBAT 2013
  • expertvillage

    expertvillag

    5 NİSAN 2006
  • Kindness

    Kindness

    23 Ocak 2006