คุณนับจำนวนบรรทัดในการแก้ปัญหา Visual Studio ได้อย่างไร


800

เป็นไปได้ไหมที่จะหาจำนวนบรรทัดของรหัสในโซลูชันทั้งหมด? ฉันเคยได้ยินMZ-Toolsแล้ว แต่มีโอเพ่นซอร์สที่เทียบเท่ากันบ้างไหม?


24
ผมเห็นว่ามันไม่ได้ช่วยมาก แต่ถ้าจัดการจะขอให้มัน ...
Fermin

33
LoC เป็นเพียงการวัดและมีการแทรกแซงโดยเฉพาะอย่างยิ่งใน 2 กรณี: 1) เพื่อให้ทราบว่าฐานรหัสนั้นใหญ่เพียงใดเมื่อคุณเข้าร่วมทีมใหม่ 2) เพื่อวัดความก้าวหน้าของคุณเมื่อพยายามทำให้ฐานรหัสของคุณกระชับยิ่งขึ้น
Piotr Owsiak

191
บางคนที่นี่กำลังบอกว่าการนับจำนวนบรรทัดของโค้ดนั้นไร้ประโยชน์โดยไม่คิดว่าดี มันค่อนข้างมีประโยชน์เพราะเป็นตัวชี้วัดที่โดยทั่วไปควรจะลดลง มันเป็นวิธีที่ง่ายในการวัดความซับซ้อนของการแก้ปัญหา (ไม่ใช่ประสิทธิภาพ) และถ้าปัญหานั้นรู้ได้ว่าง่ายรหัสที่มากขึ้นโดยทั่วไปจะมีคุณภาพต่ำกว่า อีกสิ่งหนึ่งคือเหตุใดผู้คนจึงไม่ตอบสนองถ้ามันเป็นเพียงการบอกว่าคำถามนั้นไม่ดี คุณจะคิดอย่างไรถ้าครูบอกคำถามคุณไม่ควรถาม

77
ใน VS2010 มีเครื่องมือที่สร้างขึ้นซึ่งนับบรรทัดโค้ดทั้งหมดและค่าอื่น ๆ เช่นกัน: ไปที่มุมมอง -> Windows อื่น ๆ -> ผลลัพธ์ของตัวชี้วัดโค้ด ปุ่มเล็ก ๆ ที่อยู่ในมุมที่มีลักษณะเป็นปฏิทินให้คลิกที่คำแนะนำเครื่องมือควรพูดว่าคำนวณรหัสเมตริกเพื่อความมีชีวิตชีวาและให้ VS ทำสิ่งนั้น
user959631

64
บุคคลนั้นไม่จำเป็นต้องบอกคุณเสมอว่าทำไมพวกเขาถึงต้องการนับรหัส เมื่อคำถามนี้เป็นเพียงการกล่าวถึงกรณีที่ทำไมไม่เกี่ยวข้อง เพียงตอบคำถามของเขา ฉันเกลียดที่ มีหลายครั้งที่จะถามว่าทำไมเมื่อคุณต้องการเห็นได้ชัดและมีหลายครั้งที่คุณไม่ต้องการ (เมื่อคุณไม่เห็นความต้องการ ...
PositiveGuy

คำตอบ:


524

Visual Studio 2010 Ultimate มีระบบในตัวนี้:

วิเคราะห์→คำนวณตัวชี้วัดรหัส


12
ที่สุดยอดและพรีเมียมฉันคิดว่า
Stefan Dragnev

39
คำเตือน: สิ่งนี้ทำสิ่งอื่น ๆ อีกมากมายนอกเหนือจากการนับบรรทัด นอกจากนี้ยังแสดงรายการ "ดัชนีการบำรุงรักษา", "ความซับซ้อนเชิงซ้อน", "ความลึกของการสืบทอด" และ "การมีเพศสัมพันธ์ในชั้นเรียน" ซึ่งทั้งหมดนั้นค่อนข้างซับซ้อนในการคำนวณและคุณไม่สามารถเรียกใช้ตัวชี้วัดได้เพียงส่วนหนึ่ง สิ่งนี้หมายความว่าถ้ารหัสฐานของคุณมีขนาดใหญ่เป็นพิเศษคุณอาจนั่งรอเป็นเวลาหลายชั่วโมง หากสิ่งที่คุณต้องการคือการนับบรรทัดมีวิธีแก้ปัญหาที่เร็วกว่ามาก
Darrel Hoffman

4
ใน vs2012 ultimate =)
oCcSking

9
VS 2013 มีการวิเคราะห์ -> คำนวณการวัดรหัส
Dinesh Rajan

42
น่าเสียดายที่นี่ใช้ไม่ได้กับโปรเจ็กต์ C ++ ดั้งเดิม (อย่างน้อยก็ไม่ได้อยู่ใน VS2013)
คาเมรอน

844

ฉันพบว่าPowerShellมีประโยชน์สำหรับสิ่งนี้ ฉันคิดว่า LoC เป็นตัวชี้วัดที่น่าเกรงขามอยู่แล้วดังนั้นฉันจึงไม่เชื่อว่าจะต้องมีสิ่งใดที่เป็นทางการมากกว่านี้

จากไดเรกทอรีของโซลูชันขนาดเล็ก:

PS C:\Path> (gci -include *.cs,*.xaml -recurse | select-string .).Count
8396
PS C:\Path>

ที่จะนับบรรทัดที่ไม่ว่างในไฟล์. cs และ. xaml ทั้งหมดของโซลูชัน สำหรับโครงการขนาดใหญ่ฉันเพิ่งใช้รายการส่วนขยายอื่น:

PS C:\Other> (gci -include *.cs,*.cpp,*.h,*.idl,*.asmx -recurse | select-string .).Count
909402
PS C:\Other>

ทำไมต้องใช้ทั้งแอปเมื่อบรรทัดคำสั่งเดียวทำ :)


19
(ครั้งเดียวที่ผมเคยได้ขอให้นับเส้นอุปทานคือเมื่อผู้บริหารระดับสูงได้รับการหาวิธีเวลามากก็จะใช้เวลาในการโยกย้ายทุกผลิตภัณฑ์ของเราในต่างประเทศเพื่อให้พวกเขาสามารถปิดเว็บไซต์ในประเทศของเรา.)
เกร็ก D

8
(ใช่นี้รวมถึงไฟล์ codegen'd และแสดงความคิดเห็นไม่ว่าไม่รำคาญฉันออกแบบรหัส gen'd และความคิดเห็นจะต้องมีการบำรุงรักษามากเกินไป...)
เกร็ก D

27
ดีมากลืมไปอย่างสมบูรณ์เกี่ยวกับ PowerShell ควรเปลี่ยนเป็นค่าเริ่มต้นสำหรับ cmd
lubos hasko

4
ยอดเยี่ยม ความคิดเห็นที่สิ้นสุดของคุณนั้นสรุปมันเป็นเรื่องเล็กน้อยดังนั้นทำไมต้องใช้เครื่องมือที่ไม่สำคัญ แม้ว่าฉันคิดว่าควรรวมอยู่ใน VS ทุกเวอร์ชัน
Sune Rievers

13
หากคุณต้องการยกเว้นไฟล์สำรองที่สร้างขึ้นสำหรับ XAML คุณสามารถเพิ่มสวิตช์ -exclude: (dir -exclude *.g.cs -include *.cs,*.xaml -recurse | select-string .).Count
EZ Hart

349

ผมใช้Ctrl+ +Shift Fถัดไปใส่\nในช่องค้นหาและเปิดใช้งานกล่องนิพจน์ปกติ จากนั้นในผลลัพธ์การค้นหาในส่วนท้ายของหน้าจอจะมีจำนวนไฟล์ที่ค้นหาและบรรทัดของรหัสที่พบ

คุณสามารถใช้[^\n\s]\r\nเพื่อข้ามบรรทัดว่างและเว้นวรรคเท่านั้น (เครดิตถึง Zach ในความคิดเห็น)


16
โซลูชันนี้มีบรรทัดว่างข้อคิดเห็นเอกสารและคำสั่งแยกอย่างไม่ถูกต้อง สำหรับแอปพลิเคชั่นจำนวนมากสิ่งเหล่านั้นไม่ควรนับเป็นบรรทัดของรหัส
Jay Baxter

1
แม้ว่ามันจะไม่ถูกต้องเล็กน้อย (ถ้าคุณใช้ \ n ในรหัสของคุณจริง, บรรทัดนั้นจะถูกนับเป็นสองเท่า), มันยังคงเป็นคำตอบที่ดีที่สุดถ้าคุณต้องการ ROM ของรหัสโดยไม่ต้องใช้เครื่องมือของบุคคลที่สาม
Joseph Duty

1
นอกจากนี้คุณยังสามารถเลือกประเภทไฟล์ที่ระบุโดยการเลือกตัวเลือกแบบเลื่อนลงเพียงแค่ตะโกนLook at these file types: enable regular expressions box
Moshii

1
ใช้งานได้กับโครงการขนาดเล็กมาก ... เมื่อคุณมีรหัส 100 ล้านบรรทัดซึ่งจะใช้เวลาพอสมควร
มาร์ช

11
[^\n\s]\r\nข้ามบรรทัดว่างแม้มีช่องว่างในนั้น
Zach Mierzejewski

219

ตัวนับบรรทัดโอเพนซอร์สสำหรับ VS2005, 2003 และ 2002 มีให้ที่นี่:

http://www.wndtabs.com/

นอกจากนี้ยังมีการอภิปรายเกี่ยวกับการสร้างการนับบรรทัด VS addin พร้อมด้วยโค้ดบน Codeproject ที่นี่

http://www.codeproject.com/KB/macros/LineCounterAddin.aspx

นอกจากนี้ Slick Edit Gadgets ยังมีไลน์ไลน์ที่ดีที่นี่:

http://www.slickedit.com/products/slickedit

และ Microsoft Visual Studio Team System 2008 มีตัวนับบรรทัดที่ดี

เพียงจำไว้ว่า:

การวัดความคืบหน้าการเขียนโปรแกรมด้วยบรรทัดของรหัสเป็นเหมือนการวัดความคืบหน้าการสร้างเครื่องบินด้วยน้ำหนัก บิลเกตส์


1
บ่อยครั้งที่การนับบรรทัดของรหัสเป็นเพียงธรรมดาโง่และปริมาณไม่ได้หมายความถึงคุณภาพ อย่างไรก็ตามทีมขนาดใหญ่ที่วาง 545,000 ปอนด์ (545,000 ปอนด์ !!) Dreamliner ในอากาศเป็นความสำเร็จที่แตกต่างอย่างสิ้นเชิงกว่าการเปิดตัว ultralite ที่ฉันสร้างขึ้นมาเพียงลำพังในโรงรถของฉัน และถ้าคุณคิดเกี่ยวกับจำนวนบรรทัดของรหัสใน Windows บางทีมิสเตอร์บิลหมายถึงสิ่งนี้ในวิธีที่แตกต่างจากที่มักใช้ ... ?
โดยไม่มีเงื่อนไข ReinstateMonica

18
ดูเหมือนว่าสิ่งเหล่านี้จะไม่นำไปใช้กับ Visual Studio 2010 และลิงก์ slickedit นั้นใช้งานไม่ได้
MGOwen

57
คุณพบคุณลักษณะ LOC ใน Visual Studio 2010 Ultimate ภายใต้"การวิเคราะห์> การวัดรหัส"ฉันหวังว่าฉันจะแปลถูกต้อง ฉันมีเวอร์ชั่นภาษาเยอรมัน มี "วิเคราะห์"> "Codemetriken berechnen"
เวิลด์

2
สำหรับ Visual Studio 2012 ตัวชี้วัด LoC สามารถหาได้ที่ANALYZE> คำนวณตัวชี้วัดของรหัสสำหรับโซลูชัน
tetri

2
นอกจากนี้ VS2012 ยังมีคุณสมบัตินี้ทั้งในรุ่น Ultimate และรุ่น Premium (และตอนนี้เป็น Professional ด้วยเช่นกัน)
SWalters - Reinstate Monica

81

นี่คือการอัปเดตสำหรับ Visual Studio 2012/2013/2558 สำหรับผู้ที่ต้องการทำตัวเลือก "ค้นหา" (ซึ่งฉันคิดว่าเป็นวิธีที่ง่ายที่สุด): RegEx นี้จะค้นหาบรรทัดที่ไม่ว่างทั้งหมดที่มีการยกเว้นหลายรายการเพื่อให้ผลลัพธ์ที่แม่นยำที่สุด .

ป้อน RegEx ต่อไปนี้ลงในกล่อง "ค้นหา" โปรดตรวจสอบให้แน่ใจว่าได้เลือกตัวเลือก "ใช้นิพจน์ปกติ" เปลี่ยนตัวเลือกการค้นหาเป็น "โครงการปัจจุบัน" หรือ "โซลูชันทั้งหมด" ขึ้นอยู่กับความต้องการของคุณ ตอนนี้เลือก "ค้นหาทั้งหมด" ที่ด้านล่างของหน้าต่างค้นหาผลลัพธ์คุณจะเห็น "การจับคู่บรรทัด" ซึ่งเป็นบรรทัดการนับรหัส


^(?!(\s*\*))(?!(\s*\-\-\>))(?!(\s*\<\!\-\-))(?!(\s*\n))(?!(\s*\*\/))(?!(\s*\/\*))(?!(\s*\/\/\/))(?!(\s*\/\/))(?!(\s*\}))(?!(\s*\{))(?!(\s(using))).*$

RegEx นี้ไม่รวมรายการต่อไปนี้:


ความคิดเห็น

// This is a comment

ความคิดเห็นหลายบรรทัด (สมมติว่าบรรทัดนั้นใส่เครื่องหมาย * ไว้ด้านหน้าของแต่ละบรรทัดอย่างถูกต้อง)

/* I am a
* multi-line
* comment */

XML สำหรับ Intellisense

/// <summary>
/// I'm a class description for Intellisense
/// </summary>

ความคิดเห็น HTML:

<!-- I am a HTML Comment -->

ใช้คำสั่ง:

using System;
using System.Web;

เปิดวงเล็บปีกกา:

{

วงเล็บปีกกาปิด:

}

หมายเหตุ: สิ่งใดก็ตามระหว่างเครื่องหมายปีกกาจะรวมอยู่ในการค้นหา แต่ในตัวอย่างนี้จะมีการนับโค้ด 4 บรรทัดแทนที่จะเป็น 18 บรรทัดที่ไม่ใช่ช่องว่างจริง:

        public class Test
        {
            /// <summary>
            /// Do Stuff
            /// </summary>
            public Test()
            {
                TestMe();
            }
            public void TestMe()
            {
                //Do Stuff Here
                /* And
                 * Do
                 * Stuff
                 * Here */
            }
        }

ฉันสร้างสิ่งนี้เพื่อให้จำนวน LOC ที่แม่นยำยิ่งขึ้นกว่าตัวเลือกก่อนหน้าบางตัวและคิดว่าฉันจะแบ่งปัน ผู้บังคับบัญชาชอบ LOC เป็นจำนวนมากดังนั้นฉันจึงติดอยู่กับมันซักพัก ฉันหวังว่าคนอื่นจะพบว่ามีประโยชน์นี้แจ้งให้เราทราบหากคุณมีคำถามใด ๆ หรือต้องการความช่วยเหลือในการทำให้มันใช้งานได้


18
รัก downvote โดยไม่ต้องแสดงความคิดเห็น สิ่งนี้ไม่ควรได้รับอนุญาต วิธีการแก้ปัญหาของฉันไม่ทำงาน ??? ฉันไม่สนใจคะแนนฉันแค่ต้องการโพสต์อัพเดตสำหรับผู้ใช้ VS2012-2013
Howard Renollet

ยากที่จะกรองรหัสที่สร้างขึ้นทั้งหมด (AssemblyInfo ฯลฯ ) ดังนั้นควรวิเคราะห์ / คำนวณรหัสเมตริก
MKesper

4
ทำได้ดีมาก แต่โปรดพูดถึงช่องทำเครื่องหมายใช้นิพจน์ปกติภายใต้หัวข้อตัวเลือกการค้นหา มันทำให้ง่ายขึ้นมาก
Gogutz

@MKesper แต่นั่นไม่ได้ผลสำหรับ C ++
d7samurai

รุ่นที่ง่ายกว่าถ้าไม่มี XML หรือ HTML ... ^ (? ([^ \ r \ n]) \ s) * [^ \ s +? /] + [^ \ n] * $
LastBlow

80

พบเคล็ดลับนี้: LOC พร้อม VS ค้นหาและแทนที่

ไม่ใช่ปลั๊กอินแม้ว่าจะเป็นสิ่งที่คุณกำลังมองหา


ฉันรักอันนี้ แต่ฉันคิดว่าฉันพบข้อผิดพลาดเล็กน้อยในการแสดงออกที่นั่น สำหรับ VB.Net ฉันคิดว่ามันควรจะเป็น ^ ~ (: Wh @ ') ~ (: Wh @ \ #). + และสำหรับ C # ฉันคิดว่า ^ ~ (: Wh @ //) ~ (: Wh @ \ {: Wh @) ~ (: Wh @ \}: Wh @) ~ (: Wh @ \ #). + วิธีการที่บรรทัดว่างความคิดเห็นและคำสั่งคอมไพเลอร์ได้รับการจัดการอย่างถูกต้อง มันทำงานได้ดีขึ้นสำหรับฉันด้วย VB.NET ต่อไปและ C # ฉันยังไม่ได้ทดสอบ
user12861

^ ~ (: Wh @ //) ~ (: Wh @ \ {: Wh @) ~ (: Wh @ \}: Wh @) ~ (: Wh @ \ #) ~ (: Wh @ $). + จบลงด้วย ทำงานได้ดีขึ้นสำหรับ C # ฉันได้รับบางบรรทัดประกอบด้วยเพียงช่องว่าง
user12861

มันจะไม่นับรวมความเห็นทั้งหมดหรือไม่ กรุณาใส่รหัส CODE!
HydPhani

4
นี่คือสิ่งที่ฉัน crated กับที่ทำงานใน VS2012 (อันที่โพสต์นั้นล้าสมัยในปี 2010) และนับเฉพาะบรรทัดของโค้ด มันไม่รวมความคิดเห็นทั้งหมดโดยใช้คำสั่งวงเล็บปีกกาคำสั่ง xml, บรรทัดว่าง ฯลฯ เพื่อให้คุณนับรหัสที่แท้จริงเท่านั้น: ^ (?! (\ s **)) (?! (\ s * \ - \? - \>)) ((\ s * \ <\! \ - \ -?!?!)) ((\ s * \ n)) ((\ s ** \ /)) (?! (\ s * \ / *)) (?! (\ s * \ / \ / \ /)) (?! (\ s * \ / \ /)) (?! (\ s * \})) (? ! (\ s * \ {)) (?! (\ s (ใช้))). * $
Howard Renollet

65

clocเป็น commandline ที่ยอดเยี่ยมใช้ภาษา Perl ซึ่งสามารถใช้งานกับ Windows ได้ซึ่งจะทำการแยกบรรทัดว่างบรรทัดที่ใส่ความคิดเห็นและบรรทัดซอร์สของโค้ดที่จัดกลุ่มตามรูปแบบไฟล์

ตอนนี้มันจะไม่ทำงานเป็นพิเศษในไฟล์โซลูชัน VS แต่สามารถเรียกคืนผ่านไดเรกทอรีและคุณสามารถตั้งค่าตัวกรองชื่อไฟล์ตามที่เห็นสมควร

นี่คือตัวอย่างผลลัพธ์จากหน้าเว็บของพวกเขา:

พรอมต์> cloc perl-5.10.0.tar.gz
    ไฟล์ข้อความ 4076
    ไฟล์ที่ไม่ซ้ำกัน 3883                                          
    1521 ไฟล์ถูกละเว้น

http://cloc.sourceforge.net v 1.07 T = 10.0 s (251.0 ไฟล์ / s, 84566.5 lines / s)
-------------------------------------------------- -----------------------------
ไฟล์ภาษาว่างเปล่าคอมเม้นท์โค้ดขนาด 3 Gen equiv
-------------------------------------------------- -----------------------------
Perl 2052 110356 112521 309778 x 4.00 = 1239112.00
C 135 18718 22862 140483 x 0.77 = 108171.91
ส่วนหัว C / C ++ 147 7650 12093 44042 x 1.00 = 44042.00
Bourne Shell 116 3402 5789 36882 x 3.81 = 140520.42
Lisp 1 684 2242 7515 x 1.25 = 9393.75
ทำ 7 498 473 2044 x 2.50 = 5110.00
C ++ 10 312 277 2000 x 1.51 = 3020.00
XML 26 231 0 1972 x 1.90 = 3746.80
yacc 2 128 97 1549 x 1.51 = 2338.99
YAML 2 2 0 489 x 0.90 = 440.10
DOS Batch 11 85 50 322 x 0.63 = 202.86
HTML 1 19 2 98 x 1.90 = 186.20
-------------------------------------------------- -----------------------------
SUM: 2510 142085 156406 547174 x 2.84 = 1556285.03
-------------------------------------------------- -----------------------------

ขนาดเทียบเท่ารุ่นที่สามเป็นประมาณการคร่าวๆของเท่าใดรหัสมันจะใช้เวลาในภาษารุ่นที่สาม ไม่มีประโยชน์มากนัก แต่น่าสนใจอยู่ดี


1
นี่คือสุดยอดและใช้งานง่ายสุด ๆ ง่ายกว่าโซลูชันค้นหา / แทนที่และชัดเจนกว่าสิ่งที่ทำจริงมากกว่าตัวเลือกการวัดรหัส VS เพียงแค่choco install clocนั้นcloc .ในการแก้ปัญหาของคุณผบ งานเสร็จแล้ว!
โรรี่

1
ฉันดาวน์โหลด Windows EXE จากเว็บไซต์ CLOCและรันในโฟลเดอร์โครงการเว็บไซต์ Visual Studio 2017 ของฉัน ทำงานเหมือนจับใจ ฉันชอบตัวเลือก --by-file-by-lang ที่แสดงรายการจำนวนบรรทัดต่อไฟล์และภาษาแต่ละรายการเรียงลำดับจากมากที่สุดไปหาน้อยที่สุด
humbads

42

คำตอบที่นี่ล้าสมัยเล็กน้อยอาจมาจาก vs 2008 ครั้ง เพราะใน Visual Studio เวอร์ชั่น 2010/2012 ใหม่ฟีเจอร์นี้มีมาให้แล้ว ดังนั้นจึงไม่มีเหตุผลที่จะใช้ส่วนขยายหรือเครื่องมือใด ๆ

คุณสมบัติในการนับบรรทัดของรหัส - คำนวณตัวชี้วัด ด้วยคุณสามารถคำนวณตัวชี้วัดของคุณ (LOC, ดัชนีการบำรุงรักษา, ดัชนีวัฏจักร, ความลึกของการสืบทอด) สำหรับแต่ละโครงการหรือการแก้ปัญหา

เพียงคลิกขวาที่โซลูชันหรือโครงการใน Solution Explorer

ป้อนคำอธิบายรูปภาพที่นี่

และเลือก "คำนวณตัวชี้วัด"

ป้อนคำอธิบายรูปภาพที่นี่

ข้อมูลภายหลังสำหรับการวิเคราะห์และการรวมสามารถนำเข้าสู่ Excel นอกจากนี้ใน Excel คุณสามารถกรองคลาสที่สร้างขึ้นหรือสัญญาณรบกวนอื่น ๆ จากการวัดของคุณ ตัวชี้วัดเหล่านี้รวมถึงบรรทัดของรหัส LOC สามารถรวบรวมได้ในระหว่างกระบวนการสร้างและรวมอยู่ในรายงานการสร้าง


2
Visual Studio 2010 ยังมีตัวชี้วัดนี้ จริงๆแล้วไม่มีอะไรใหม่ใน VS2012 เลย
Mike Chaliy

1
ใช่ แต่คำตอบที่นี่มาจากเวลาของปี 2008 และล้าสมัยเล็กน้อยทำไมต้องใช้อะไรหรือติดตั้งส่วนขยายเมื่อมันเป็นคุณสมบัติในตัว และแม้จะไม่ใช่คุณสมบัติใหม่ที่หลายคนไม่ทราบเกี่ยวกับมัน
ทะเบียน

@ MikeChaliy อาจเป็นประโยคแนะนำตัวที่สองทำให้คุณสับสนดังนั้นฉันจึงเขียนมันใหม่เพื่อหลีกเลี่ยงความสับสน
ทะเบียน

ฉันมีวิธีแก้ปัญหาแบบเลเยอร์ แต่แสดงข้อผิดพลาดนี้: "ข้อยกเว้นได้รับการโยนโดยเป้าหมายของการภาวนา" ทำไม?
user197508

5
นี่ไม่ใช่บรรทัดของโค้ด แต่เป็นการคอมไพล์ไลน์ (เช่นหลังจากมันกลายเป็น IL) ฉันคิดว่า Fermin กำลังมองหาบรรทัดรวบรวมไว้ล่วงหน้า
mikeschuld

29

นิพจน์ทั่วไปมีการเปลี่ยนแปลงระหว่าง VS2010 ถึง 2012 ดังนั้นโซลูชันนิพจน์ทั่วไปส่วนใหญ่ที่นี่จึงไม่ทำงานอีกต่อไป

(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+

จะค้นหาทุกบรรทัดที่ไม่ว่างเปล่าไม่ใช่แค่วงเล็บเดี่ยว ('{' หรือ '}') และไม่ใช่แค่ #include หรือตัวประมวลผลล่วงหน้าอื่น ๆ

ใช้Ctrl- shift-fและตรวจสอบให้แน่ใจว่าได้เปิดใช้งานนิพจน์ปกติแล้ว

นิพจน์ปกติที่สอดคล้องกันสำหรับ VS 2010 และรุ่นที่เก่ากว่าคือ

^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+

19

ใน Visual Studio Team System 2008 คุณสามารถทำได้จากเมนูวิเคราะห์ -> 'คำนวณตัวชี้วัดโค้ดสำหรับวิธีแก้ไขปัญหา' และจะให้การนับจำนวนบรรทัดสำหรับโซลูชันทั้งหมดของคุณ (เหนือสิ่งอื่นใดg )


12
Visual Studio Team System 2008 ไม่สามารถจัดการกับการนับรหัสที่ไม่มีการจัดการได้ ;)
คริสเตียน

17

สำหรับผู้อ่านในอนาคตผมอยากจะแนะนำให้ขยาย DPack สำหรับ Visual Studio 2010

มันมีภาระสาธารณูปโภคในตัวรวมถึงตัวนับบรรทัดซึ่งระบุจำนวนบรรทัดว่างโค้ดและอื่น ๆ


นอกจากนี้ยังมีรุ่นสำหรับ VS 2012
Philipp M

11

ทางออกที่ง่ายคือการค้นหาไฟล์ทั้งหมด พิมพ์ "*" ขณะใช้สัญลักษณ์แทน ซึ่งจะตรงกับทุกบรรทัด ในตอนท้ายของหน้าต่างค้นหาผลลัพธ์คุณจะเห็นบรรทัดเรียงลำดับ:

Matching lines: 563 Matching files: 17 Total files searched: 17

แน่นอนว่านี่ไม่ใช่สิ่งที่ดีสำหรับโครงการขนาดใหญ่เนื่องจากทุกบรรทัดถูกตัดเฉือนและโหลดลงในหน่วยความจำเพื่อนำไปแจกจ่ายในหน้าต่างค้นหาผลลัพธ์

อ้างอิง:




4

เห็นได้ชัดว่าเครื่องมือง่ายขึ้น แต่ฉันรู้สึกดีที่ทำสิ่งนี้ใน PowerShell :)

สคริปต์นี้ค้นหาการอ้างอิง. csproj ทั้งหมดในไฟล์. sln และจากนั้นภายในไฟล์ csproj แต่ละไฟล์ที่ตั้งอยู่รวมถึงไฟล์สำหรับการรวบรวม สำหรับแต่ละไฟล์ที่รวมอยู่ในการรวบรวมมันจะสร้างวัตถุที่มีคุณสมบัติ: โซลูชัน, โครงการ, ไฟล์, เส้น มันเก็บวัตถุเหล่านี้ทั้งหมดในรายการแล้วจัดกลุ่มและโครงการข้อมูลตามต้องการ

#path to the solution file e.g. "D:\Code\Test.sln"
$slnFile = "D:\Code\Test.sln"


#results
$results = @()

#iterate through .csproj references in solution file
foreach($projLines in get-item $slnFile | Get-Content | Select-String '".*csproj')
{
    $projFile = [System.IO.Path]::Combine([System.IO.Path]::GetDirectoryName($slnFile), [regex]::Match($projLines,'[^"]*csproj').Value)
    $projFolder = [System.IO.Path]::GetDirectoryName($projFile)

    #from csproj file: get lines for files to compile <Compile Include="..."/>
    $includeLines = get-item $projFile | Get-Content | Select-String '<Compile Include'


    #count of all files lines in project
    $linesInProject = 0;
    foreach($fileLine in $includeLines)
    {
        $includedFilePath = [System.IO.Path]::Combine($projFolder, [Regex]::Match($fileLine, '"(?<file>.*)"').Groups["file"].Value)
        $lineCountInFile = (Get-Content $includedFilePath).Count      
        $results+=New-Object PSObject -Property @{ Solution=$slnFile ;Project=$projFile; File=$includedFilePath; Lines=$lineCountInFile }
    }
}

#filter out any files we dont need
$results = $results | ?{!($_.File -match "Designer")}


#print out:

"---------------lines per solution--------------"
$results | group Solution | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}
"---------------lines per peoject--------------"
$results | group Project | %{$_.Name + ": " + ($_.Group | Measure-Object Lines -Sum).Sum}


3

ใช้เมนู -> วิเคราะห์ -> คำนวณตัวเลือกการวัดรหัสใน Visual Studio 2010 Ultimate


3

คุณสามารถใช้Visual Studio รหัสตัวชี้วัด Powertool 10.0 เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่คำนวณการวัดสองสามตัวบนรหัสที่ได้รับการจัดการสำหรับคุณ (รวมถึงบรรทัดของรหัส) คุณสามารถรับปลั๊กอิน VS 2010 ที่นำเครื่องมือมาสู่ Visual Studioและทำให้มันรวดเร็วเท่ากับการเลือกรายการเมนูและคลิก "วิเคราะห์โซลูชัน"


2

เห็นด้วยกับ Ali Parr WndTab Line Counter addin เป็นเครื่องมือดังกล่าว http://www.codeproject.com/KB/macros/linecount.aspx

เป็นความคิดที่ดีที่จะค้นหาจากไซต์ดาวน์โหลดเพื่อค้นหาเครื่องมือที่เกี่ยวข้อง http://www.cnet.com/1770-5_1-0.html?query=code+counter&tag=srch



2

คุณสามารถใช้เครื่องมือฟรีSourceMonitor

ให้การวัดจำนวนมาก: เส้นของรหัส, จำนวนคำสั่ง, ความซับซ้อน, ความลึกของบล็อก

มีเอาต์พุตกราฟิกผ่านแผนภูมิ


1

คุณสามารถใช้ Add-in ตัวนับบรรทัดโครงการใน Visual Studio 2010 โดยปกติแล้วจะไม่ทำงานกับ Visual Studio 2010 แต่จะทำงานกับไฟล์. reg ที่เป็นประโยชน์ได้จากที่นี่: http://www.onemanmmo.com/index PHP? cmd = newsitem และความคิดเห็น = news.1.41.0


1

ฉันสร้างสคริปต์ PowerShell ที่รวดเร็วและสกปรกสำหรับการนับบรรทัดในโครงสร้างโฟลเดอร์ มันไม่ได้มีคุณลักษณะครบถ้วนเกือบเท่ากับเครื่องมืออื่น ๆ ที่อ้างถึงในคำตอบอื่น ๆ แต่ฉันคิดว่ามันดีพอที่จะให้การเปรียบเทียบคร่าวๆเกี่ยวกับขนาดของไฟล์รหัสเมื่อเทียบกับขนาดอื่นในโครงการหรือโซลูชัน

สคริปต์สามารถพบได้ที่นี่:

https://gist.github.com/1674457



0

ใน Visual Studio 2015 ไปที่เมนูวิเคราะห์และเลือก "คำนวณรหัสเมตริก"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.