2009-10-26 31 views
6

का निरीक्षण मैं एक तरह से प्रोग्राम के रूप में एक .NET (सी #, VB.NET, ..) स्रोत कोड का निरीक्षण करने के स्थिर कोड विश्लेषण करने के लिए देख रहा हूँ।प्रोग्राम नेट कोड

मैं जैसे कोड पर प्रश्न करने होंगे करना चाहते हैं: - सूची वर्गों जिसका नाम से एक्स शुरू - सूची एक्स के सभी उपवर्गों - सूची तरीकों जो वर्ग की एक वस्तु एक्स instanciate - अगर विधि निर्धारित एक्स वाई नामक एक चर शामिल - सूची तरीकों विधि y बुला - ...

क्या मैं देख रहा हूँ एक API या कुछ और मुझे एक स्रोत कोड की जांच करने में सक्षम कार्यक्रमों लिखने के लिए अनुमति देता है।

उत्तर

5

आप System.Reflection उपयोग कर सकते हैं, कि चीजें आप चाहते हैं में से कुछ के लिए अच्छी तरह से चाल करना चाहिए। जहां तक ​​आईएल में प्रवेश हो रहा है, मोनो के Cecil देखें।

+0

जब तक, @monkeyget स्रोत कोड को देख रहा है। फिर वे शायद एक पार्सर चाहते हैं। – kenny

+0

या एक कंपाइलर :)। हाँ मैं तुम्हें याद किया कि उसने कहा "स्रोत कोड"। मुझे लगता है कि एनडीपेन्ड और कुछ आईडीई प्लगइन्स तब सहायता के हो सकते हैं। माफ़ कीजिये! – MichaelGG

+0

सिस्टम। रिफ्लेक्शन वास्तव में एक विकल्प है जिसे मैं देखता हूं लेकिन यह सीमित लगता है और मुझे यकीन है कि मैं जो करना चाहता हूं उसके लिए अधिक शक्तिशाली और सरल उपकरण मौजूद होना चाहिए। मैंने प्रश्न में स्रोत कोड का उल्लेख किया लेकिन आईएल पर काम करने वाला एक उपकरण भी ठीक रहेगा। – Monkeyget

1

स्थिर कोड विश्लेषण के लिए FxCop का उपयोग क्यों नहीं करें?

+0

क्योंकि वह सॉफ़्टवेयर लिखना चाहता है जो उसे FxCop करने के लिए अनुमति देगा। –

9

NDepend नेट कोड संरचना क्वेरी करने के लिए एक SQL जैसी क्वेरी भाषा देता है।

+0

शानदार उपकरण। NDepend सिफारिश के लिए +1। –

+0

एनडीपेन्स में प्रोग्रामेटिक इंटरफ़ेस कहां है? दूसरे शब्दों में इसका उपयोग अपने स्वयं के सी # कोड से कैसे किया जा सकता है? – Ash

+0

मेरा मानना ​​है कि एनडेंड पर कुछ प्रकार की प्रोग्रामिंग/क्वेरी भाषा है ... हालांकि यह मेरे ज्ञान की सीमा है। मुझे लगता है कि आपको सीधे एनडपेन्स लोगों से संपर्क करना होगा। – stusmith

1

DMS Software Reengineering Toolkit देखें।

डीएमएस पार्सर्स प्रदान करता है जो स्वचालित रूप से कई भाषाओं (सी, सी ++, जावा, सी # [1.2, 2.0, 3.0 और 4.0], कोबोल, ईसीएमएस्क्रिप्ट, पीएचपी, वेरिलोग, ..) के साथ एएसटी बनाते हैं। साथ ही प्रतीक सारणी और नियंत्रण और इनमें से कई के लिए डेटा प्रवाह विश्लेषण।

डीएमएस के पैटर्न भाषा सतह वाक्य रचना पैटर्न मिलान करने के लिए इस्तेमाल किया जा सकता है, और एक साथ प्रतीक तालिका प्रविष्टियों और विभिन्न डाटा प्रवाह संबंधों के साथ संबंधों को कोड तत्वों के लिए प्रक्रियात्मक विश्लेषण के साथ संयुक्त। इसका उपयोग विभिन्न प्रकार के प्रोग्राम विश्लेषण टूल को लागू करने के लिए किया गया है, और बुनियादी कार्यक्रम विश्लेषण बुनियादी ढांचे के निर्माण के लिए काफी समय बर्बाद किए बिना, अपने स्वयं के उपकरण बनाने के लिए एक आधार बनने के लिए डिज़ाइन किया गया है।

0

परावर्तक में कोड मॉडल का उपयोग करने के बारे में क्या? कोड मॉडल व्यू ऐड-इन के साथ आपको कोड की संरचना से पूछताछ करने का विचार प्राप्त करने में सक्षम होना चाहिए।

0

स्टूस्मिथ के जवाब को पूरा करने के लिए, NDepend ऐसा लगता है जो आप खोज रहे हैं। NDepend लिनक्यू क्वेरीज़ पर कोड क्वेरीज़ और नियम लिखने देता है, (जिसे हमकहते हैं)। अस्वीकरण: मैं उपकरण

उदाहरण के लिए के डेवलपर्स में से एक हूँ यहाँ कुछ CQLinq प्रश्नों हैं: -> सूची वर्गों जिसका नाम एक्स से शुरू

from t in Application.Types.WithNameLike("^x") 
where t.IsClass select t 

-

> सूची सभी एक्स के उपवर्गों

from t in Application.Types 
where t.DeriveFrom("MyNamespace.MyTypeX") 
select t 

-> सूची तरीकों जो वर्ग की एक वस्तु एक्स

instanciate
from m in Application.Methods 
where m.CreateA("MyNamespace.MyTypeX") 
select m 

-> सूची तरीकों विधि y बुला - ...

from m in Application.Methods 
where m.IsUsing("MyNamespace.MyType.MyMethodY()") 
select m 

200 code rules से अधिक डिफ़ॉल्ट रूप से प्रस्तावित हैं। मौजूदा नियमों को अनुकूलित करना या अपने नियम बनाना, को सी # LINQ वाक्यविन्यास के लिए सरल धन्यवाद है। नाम स्थान NDepend.CodeModel में प्रकारों पर

enter image description here

वास्तव में, CQLinq पर NDepend.API आधारित है, और अधिक विशेष रूप से:

CQLinq प्रश्नों VisualStudio में लाइव संपादित किया जा सकता है, और की पेशकश तत्काल परिणाम, ब्राउज़िंग सुविधाओं के साथ। NDepend.API के साथ आप चीजों को और अधिक मुश्किल tghan करने के लिए प्रोग्राम लिख सकते हैं केवल CQLinq प्रश्न, उदाहरण के लिए हमने Code Duplicate Finder tool NDepend.API के साथ लिखा था।

नियम live in Visual Studio और generated HTML+javascript report में बिल्ड प्रक्रिया समय पर सत्यापित किए जा सकते हैं।

0

मैं इसके लिए Roslyn का उपयोग करने की सलाह दूंगा।

+0

क्या आप समझा सकते हैं क्यों? –

+0

क्योंकि ओपी ने कहा 'प्रोग्रामेटिक रूप से निरीक्षण .. स्रोत कोड' और यही वह है जो रोज़लिन के बारे में है। सी # के रूप में ढांचे का उपयोग करने का विचार स्वयं उपयोग करेगा बहुत आकर्षक है। –

संबंधित मुद्दे