เป็นไปได้ไหมที่จะหาจำนวนบรรทัดของรหัสในโซลูชันทั้งหมด? ฉันเคยได้ยินMZ-Toolsแล้ว แต่มีโอเพ่นซอร์สที่เทียบเท่ากันบ้างไหม?
เป็นไปได้ไหมที่จะหาจำนวนบรรทัดของรหัสในโซลูชันทั้งหมด? ฉันเคยได้ยินMZ-Toolsแล้ว แต่มีโอเพ่นซอร์สที่เทียบเท่ากันบ้างไหม?
คำตอบ:
Visual Studio 2010 Ultimate มีระบบในตัวนี้:
วิเคราะห์→คำนวณตัวชี้วัดรหัส
ฉันพบว่า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>
ทำไมต้องใช้ทั้งแอปเมื่อบรรทัดคำสั่งเดียวทำ :)
(dir -exclude *.g.cs -include *.cs,*.xaml -recurse | select-string .).Count
ผมใช้Ctrl+ +Shift Fถัดไปใส่\n
ในช่องค้นหาและเปิดใช้งานกล่องนิพจน์ปกติ จากนั้นในผลลัพธ์การค้นหาในส่วนท้ายของหน้าจอจะมีจำนวนไฟล์ที่ค้นหาและบรรทัดของรหัสที่พบ
คุณสามารถใช้[^\n\s]\r\n
เพื่อข้ามบรรทัดว่างและเว้นวรรคเท่านั้น (เครดิตถึง Zach ในความคิดเห็น)
Look at these file types:
enable regular expressions box
[^\n\s]\r\n
ข้ามบรรทัดว่างแม้มีช่องว่างในนั้น
ตัวนับบรรทัดโอเพนซอร์สสำหรับ VS2005, 2003 และ 2002 มีให้ที่นี่:
นอกจากนี้ยังมีการอภิปรายเกี่ยวกับการสร้างการนับบรรทัด 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 มีตัวนับบรรทัดที่ดี
เพียงจำไว้ว่า:
การวัดความคืบหน้าการเขียนโปรแกรมด้วยบรรทัดของรหัสเป็นเหมือนการวัดความคืบหน้าการสร้างเครื่องบินด้วยน้ำหนัก บิลเกตส์
นี่คือการอัปเดตสำหรับ 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 เป็นจำนวนมากดังนั้นฉันจึงติดอยู่กับมันซักพัก ฉันหวังว่าคนอื่นจะพบว่ามีประโยชน์นี้แจ้งให้เราทราบหากคุณมีคำถามใด ๆ หรือต้องการความช่วยเหลือในการทำให้มันใช้งานได้
พบเคล็ดลับนี้: LOC พร้อม VS ค้นหาและแทนที่
ไม่ใช่ปลั๊กอินแม้ว่าจะเป็นสิ่งที่คุณกำลังมองหา
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 -------------------------------------------------- -----------------------------
ขนาดเทียบเท่ารุ่นที่สามเป็นประมาณการคร่าวๆของเท่าใดรหัสมันจะใช้เวลาในภาษารุ่นที่สาม ไม่มีประโยชน์มากนัก แต่น่าสนใจอยู่ดี
choco install cloc
นั้นcloc .
ในการแก้ปัญหาของคุณผบ งานเสร็จแล้ว!
คำตอบที่นี่ล้าสมัยเล็กน้อยอาจมาจาก vs 2008 ครั้ง เพราะใน Visual Studio เวอร์ชั่น 2010/2012 ใหม่ฟีเจอร์นี้มีมาให้แล้ว ดังนั้นจึงไม่มีเหตุผลที่จะใช้ส่วนขยายหรือเครื่องมือใด ๆ
คุณสมบัติในการนับบรรทัดของรหัส - คำนวณตัวชี้วัด ด้วยคุณสามารถคำนวณตัวชี้วัดของคุณ (LOC, ดัชนีการบำรุงรักษา, ดัชนีวัฏจักร, ความลึกของการสืบทอด) สำหรับแต่ละโครงการหรือการแก้ปัญหา
เพียงคลิกขวาที่โซลูชันหรือโครงการใน Solution Explorer
และเลือก "คำนวณตัวชี้วัด"
ข้อมูลภายหลังสำหรับการวิเคราะห์และการรวมสามารถนำเข้าสู่ Excel นอกจากนี้ใน Excel คุณสามารถกรองคลาสที่สร้างขึ้นหรือสัญญาณรบกวนอื่น ๆ จากการวัดของคุณ ตัวชี้วัดเหล่านี้รวมถึงบรรทัดของรหัส LOC สามารถรวบรวมได้ในระหว่างกระบวนการสร้างและรวมอยู่ในรายงานการสร้าง
นิพจน์ทั่วไปมีการเปลี่ยนแปลงระหว่าง VS2010 ถึง 2012 ดังนั้นโซลูชันนิพจน์ทั่วไปส่วนใหญ่ที่นี่จึงไม่ทำงานอีกต่อไป
(^(?!(\s*//.+)))+(^(?!(#.+)))+(^(?!(\s*\{.+)))+(^(?!(\s*\}.+)))+(^(?!(\s*\r?$)))+
จะค้นหาทุกบรรทัดที่ไม่ว่างเปล่าไม่ใช่แค่วงเล็บเดี่ยว ('{' หรือ '}') และไม่ใช่แค่ #include หรือตัวประมวลผลล่วงหน้าอื่น ๆ
ใช้Ctrl- shift-fและตรวจสอบให้แน่ใจว่าได้เปิดใช้งานนิพจน์ปกติแล้ว
นิพจน์ปกติที่สอดคล้องกันสำหรับ VS 2010 และรุ่นที่เก่ากว่าคือ
^~(:Wh@//.+)~(:Wh@\{:Wh@)~(:Wh@\}:Wh@)~(:Wh@/#).+
ใน Visual Studio Team System 2008 คุณสามารถทำได้จากเมนูวิเคราะห์ -> 'คำนวณตัวชี้วัดโค้ดสำหรับวิธีแก้ไขปัญหา' และจะให้การนับจำนวนบรรทัดสำหรับโซลูชันทั้งหมดของคุณ (เหนือสิ่งอื่นใดg )
สำหรับผู้อ่านในอนาคตผมอยากจะแนะนำให้ขยาย DPack สำหรับ Visual Studio 2010
มันมีภาระสาธารณูปโภคในตัวรวมถึงตัวนับบรรทัดซึ่งระบุจำนวนบรรทัดว่างโค้ดและอื่น ๆ
ทางออกที่ง่ายคือการค้นหาไฟล์ทั้งหมด พิมพ์ "*" ขณะใช้สัญลักษณ์แทน ซึ่งจะตรงกับทุกบรรทัด ในตอนท้ายของหน้าต่างค้นหาผลลัพธ์คุณจะเห็นบรรทัดเรียงลำดับ:
Matching lines: 563 Matching files: 17 Total files searched: 17
แน่นอนว่านี่ไม่ใช่สิ่งที่ดีสำหรับโครงการขนาดใหญ่เนื่องจากทุกบรรทัดถูกตัดเฉือนและโหลดลงในหน่วยความจำเพื่อนำไปแจกจ่ายในหน้าต่างค้นหาผลลัพธ์
อ้างอิง:
คุณสามารถใช้:
ฉันชอบOxyProject Metrics VS Addin
เห็นได้ชัดว่าเครื่องมือง่ายขึ้น แต่ฉันรู้สึกดีที่ทำสิ่งนี้ใน 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}
เครื่องมืออย่างง่ายอื่น ๆ สำหรับ VS2008 (โอเพ่นซอร์ส): http://www.accendo.sk/Download/SourceStat.zip
ใช้เมนู -> วิเคราะห์ -> คำนวณตัวเลือกการวัดรหัสใน Visual Studio 2010 Ultimate
คุณสามารถใช้Visual Studio รหัสตัวชี้วัด Powertool 10.0 เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่คำนวณการวัดสองสามตัวบนรหัสที่ได้รับการจัดการสำหรับคุณ (รวมถึงบรรทัดของรหัส) คุณสามารถรับปลั๊กอิน VS 2010 ที่นำเครื่องมือมาสู่ Visual Studioและทำให้มันรวดเร็วเท่ากับการเลือกรายการเมนูและคลิก "วิเคราะห์โซลูชัน"
เห็นด้วยกับ 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
นี่คือเคล็ดลับ .. มันนับไฟล์ Js ด้วย
http://www.spoiledtechie.com/post/2011/11/22/How-To-Count-Lines-of-Code-in-Visual-Studio.aspx
คุณสามารถใช้เครื่องมือฟรีSourceMonitor
ให้การวัดจำนวนมาก: เส้นของรหัส, จำนวนคำสั่ง, ความซับซ้อน, ความลึกของบล็อก
มีเอาต์พุตกราฟิกผ่านแผนภูมิ
คุณสามารถใช้ Add-in ตัวนับบรรทัดโครงการใน Visual Studio 2010 โดยปกติแล้วจะไม่ทำงานกับ Visual Studio 2010 แต่จะทำงานกับไฟล์. reg ที่เป็นประโยชน์ได้จากที่นี่: http://www.onemanmmo.com/index PHP? cmd = newsitem และความคิดเห็น = news.1.41.0
ฉันสร้างสคริปต์ PowerShell ที่รวดเร็วและสกปรกสำหรับการนับบรรทัดในโครงสร้างโฟลเดอร์ มันไม่ได้มีคุณลักษณะครบถ้วนเกือบเท่ากับเครื่องมืออื่น ๆ ที่อ้างถึงในคำตอบอื่น ๆ แต่ฉันคิดว่ามันดีพอที่จะให้การเปรียบเทียบคร่าวๆเกี่ยวกับขนาดของไฟล์รหัสเมื่อเทียบกับขนาดอื่นในโครงการหรือโซลูชัน
สคริปต์สามารถพบได้ที่นี่:
ลองใช้เนปจูน นอกจากนี้ยังช่วยให้คุณมีสิ่งต่าง ๆ เช่นช่องว่างแท็บบรรทัดแสดงความคิดเห็นนอกเหนือจาก LoC http://neptuner.googlecode.com/files/neptuner_0_30_windows.zip
ใน Visual Studio 2015 ไปที่เมนูวิเคราะห์และเลือก "คำนวณรหัสเมตริก"