2010-03-10 82 views
15

我正在與一個遺傳代碼基地,其中包含數千行註釋掉的代碼。我知道之前的編碼人員是爲了挽救他爲後代而辛勤工作的所有努力,而不是簡單地刪除它,但是:我永遠不會讀它,它只會阻礙它。一個問題的例子是,當我對某些代碼段進行文本搜索時,我在註釋代碼中獲得了數十個「錯誤」命中。 PITA。快速簡單的方法來刪除「死」(註釋掉)代碼

是否有快速/簡單的方法來檢測大塊註釋掉的代碼?一個聰明的RegEx也許?

我碰巧在VB.NET中工作,此時註釋字符是單撇號。

+1

是否有您想保留什麼意見嗎?該評論是否應該刪除,如果它看起來像包含代碼,而不是如果它包含普通文本? – 2010-03-10 22:17:32

+0

這就是問題所在。有一些有用的評論,但他們在二,三或四行上衣。無用的評論代碼傾向於運行數十條和數百條評論線。 – 2010-03-10 22:20:58

+0

我認爲一些聰明的正則表達式可以解決這個問題。一些能夠找到10個或更多以單撇號開頭的連續行的東西。如果正則表達式爲我選擇了註釋代碼,我可以簡單地點擊刪除並移到下一個塊。 – 2010-03-10 22:25:04

回答

13

您可以使用正則表達式搜索。搜索

^.*'.*$ 

查找帶註釋的單行。您可能需要找到至少3條以評論開頭的行:

^.*'.*\n.*'.*\n.*'.*$ 

讓貓遠離鍵盤。

+1

這不會最終刪除所有需要的評論嗎?你如何區分舊代碼和期望的評論? – 2010-03-10 22:29:11

+5

這是爲了找到並選擇註釋的代碼,按DEL是OP的工作。 – 2010-03-10 22:31:55

+1

+1。與涉及宏的回答相比,這會更快,更受用戶控制。 – 2010-03-10 22:33:47

0

這就是版本控制系統的用途。

我會確保它是版本控制(但願不是Visual源安全)下,檢查出來,刪除所有註釋代碼,並檢查它回。

我還勸阻在實踐中您未來的開發團隊。

+0

我們使用Subversion,所以我不擔心「丟失」任何東西。這個代碼在很多年前就開始了,因爲在版本控制系統成爲常規之前,等待它,VB3。我正在手動移除碎屑,但這是勞動密集型的,所以我正在尋找更快的方法。我想繼續並重構「實時」代碼。 – 2010-03-10 22:23:05

+0

聽起來像是一個教育問題。告訴你的團隊不要再這樣做,然後開始艱難的搗亂來清理混亂。 – duffymo 2010-03-11 00:08:20

4

恐怕我同意duffymo。我不認爲你會找到一個可靠的自動方法來刪除註釋掉的代碼。我相信如果你足夠努力的搜索,你會發現一個,但你的時間會更好地花在你的工作上。

我過去一直處於這種情況下(我經常這樣做),而最終我做的是在我處理各種模塊時刪除註釋掉的代碼。

作爲一個例子,我打開了Person類來進行更改,並且我看到註釋掉了尚未刪除的代碼。我檢查代碼(我們使用VSS),刪除不良代碼,檢查它,最後,檢查出來做我的工作。

它在一切消失之前需要時間,但我認爲這是解決問題的有效使用時間。

+1

「我們使用VSS」 - 我很抱歉。這是市場上最糟糕的產品,不用說了。爲什麼你會這樣做,當有更多有效的替代品可供選擇,無需花費?但是,謝謝你的支持。 – duffymo 2010-03-10 23:15:25

+1

+1。我也曾經遇到這種情況,而且我也一樣。如果某些特定的註釋掉的代碼令您煩惱,請將其刪除。如果它存在於其他地方,但它現在還沒有進入,那麼刪除它是浪費時間。務實,不浪費時間整理有用的代碼,不需要更改或閱讀。 – MarkJ 2010-03-11 06:58:14

+0

@duffymo:我同意但它超出了我的控制範圍。 (我提出了建議)但是,這是公司的標準,而且是一家大公司。 – 2010-03-11 15:51:11

0

我會建議編寫或發現一個Visual Studio的宏,這將有助於刪除評論。

一些僞邏輯:

  • 開始在一個行號,讀取第一個字符。記住這個行號。
  • 如果是VB註釋字符',則繼續
  • 讀取下一行的第一個字符。如果是評論字符,繼續。
  • 當查找不是註釋字符的行時,請分析遍歷的行數。
  • 如果遍歷的行數與您的閾值n匹配,則刪除它們。
3
(^\s*//.*\n)^10 

找到//風格的10條併發註釋掉線。

註釋掉測試:

\s*//\s*\[Test\].*\n 
+0

這幫我找到了一個註釋代碼:) – Ronnie 2014-07-16 14:49:51

+3

由於某種原因,這不再適用於我,我必須使用(^ \ s * //。* \ n){10} – Ronnie 2014-08-11 15:17:22

+0

@Ronnie:謝謝你的。我必須像你在VS2010中提到的那樣去做。它也讓我有點意識到這是提供給「查找/替換+使用正則表達式複選框」。這是一個很棒的提示! – MikeJ 2017-10-21 18:31:51

1

對於任何C#的人誰在這裏結束了,請使用以下的正則表達式查找註釋掉線。

(^|[^/])//[^/] 
0

我知道這是一箇舊線程,但幫助我的技巧還沒有被提及。

我搜索該正則表達式:

(^ \ S *」 = \ n。)^

它發現註釋包含一個等號線。我的經驗是,大多數註釋掉的代碼塊至少包含一行有賦值的行,並且在實際評論中等號非常少見。

我不自動更換,我只是按F3,如果一行匹配我只是按回車鍵替換爲新線突出顯示的文本。如果它出現在一行註釋掉的線段中,那麼我只需手動選擇,然後再按Enter鍵和F3。