回答編集履歴

3

リンクあった

2024/08/31 17:16

投稿

TN8001
TN8001

スコア10022

test CHANGED
@@ -1,4 +1,4 @@
1
- ~~[How can I remove all comments from a file of code](https://github.com/dotnet/roslyn/wiki/FAQ#how-can-i-remove-all-comments-from-a-file-of-code)~~(リンク切れ)
1
+ [How can I remove all comments from a file of code](https://github.com/dotnet/roslyn/blob/main/docs/wiki/FAQ.md#how-can-i-remove-all-comments-from-a-file-of-code)
2
2
  [FAQ(32)](https://github.com/dotnet/roslyn-sdk/blob/ad006d17388f67d40f02749e5b4fbc570be41aad/samples/CSharp/APISamples/FAQ.cs#L2025)
3
3
 
4
4
  雑でよければ上記リンクの通りで削除はできました(ただし空行が残りますorz

2

見直しキャンペーン中

2023/08/10 10:19

投稿

TN8001
TN8001

スコア10022

test CHANGED
@@ -1,5 +1,4 @@
1
- [How can I remove all comments from a file of code](https://github.com/dotnet/roslyn/wiki/FAQ#how-can-i-remove-all-comments-from-a-file-of-code)
1
+ ~~[How can I remove all comments from a file of code](https://github.com/dotnet/roslyn/wiki/FAQ#how-can-i-remove-all-comments-from-a-file-of-code)~~(リンク切れ)
2
-
3
2
  [FAQ(32)](https://github.com/dotnet/roslyn-sdk/blob/ad006d17388f67d40f02749e5b4fbc570be41aad/samples/CSharp/APISamples/FAQ.cs#L2025)
4
3
 
5
4
  雑でよければ上記リンクの通りで削除はできました(ただし空行が残りますorz

1

見直しキャンペーン中

2023/07/20 15:01

投稿

TN8001
TN8001

スコア10022

test CHANGED
@@ -1,153 +1,76 @@
1
1
  [How can I remove all comments from a file of code](https://github.com/dotnet/roslyn/wiki/FAQ#how-can-i-remove-all-comments-from-a-file-of-code)
2
-
3
-
4
2
 
5
3
  [FAQ(32)](https://github.com/dotnet/roslyn-sdk/blob/ad006d17388f67d40f02749e5b4fbc570be41aad/samples/CSharp/APISamples/FAQ.cs#L2025)
6
4
 
7
-
8
-
9
- 雑でよければ上記リンクの通りで削除はできました
5
+ 雑でよければ上記リンクの通りで削除はできました(ただし空行が残りますorz
10
-
11
- ただし空行が残りますorz
12
-
13
- ```C#
6
+ ```cs
14
-
15
7
  using System;
16
-
17
8
  using Microsoft.CodeAnalysis;
18
-
19
9
  using Microsoft.CodeAnalysis.CSharp;
20
10
 
11
+ namespace Questions243387
12
+ {
13
+ internal class Program
14
+ {
15
+ private static void Main()
16
+ {
17
+ var tree = SyntaxFactory.ParseSyntaxTree(
18
+ @"using System;
19
+ // 行頭にある一行コメント
20
+ /* 行頭から始まる1行コメント */
21
+ /*
22
+ * 行頭から始まる複数行コメント
23
+ */
24
+ namespace ConsoleApp1
25
+ {
26
+ class Program // 行の途中にある一行コメント
27
+ {
28
+ static void Main(string[] /* 行の途中にある1行コメント */ args)
29
+ {
30
+ Console.WriteLine(""ダブルクォーテーションの中に含まれる「//」"");
31
+ }
32
+ }
33
+ }");
21
34
 
22
-
23
- namespace Questions243387
24
-
25
- {
26
-
27
- internal class Program
28
-
29
- {
30
-
31
- private static void Main()
35
+ var rewriter = new CommentRemover();
32
-
33
- {
34
-
35
- var tree = SyntaxFactory.ParseSyntaxTree(
36
+ var newRoot = rewriter.Visit(tree.GetRoot());
36
-
37
- @"using System;
38
-
39
- // 行頭にある一行コメント
40
-
41
- /* 行頭から始まる1行コメント */
42
-
43
- /*
44
-
45
- * 行頭から始まる複数行コメント
46
-
47
- */
48
-
49
- namespace ConsoleApp1
50
-
51
- {
52
-
53
- class Program // 行の途中にある一行コメント
54
-
55
- {
56
-
57
- static void Main(string[] /* 行の途中にある1行コメント */ args)
58
-
59
- {
60
-
61
- Console.WriteLine(""ダブルクォーテーションの中に含まれる「//」"");
37
+ Console.WriteLine(newRoot.ToFullString());
62
-
63
38
  }
64
39
 
40
+ private class CommentRemover : CSharpSyntaxRewriter
41
+ {
42
+ public override SyntaxTrivia VisitTrivia(SyntaxTrivia trivia)
43
+ {
44
+ if(trivia.Kind() == SyntaxKind.SingleLineCommentTrivia
45
+ || trivia.Kind() == SyntaxKind.MultiLineCommentTrivia)
46
+ {
47
+ return default;
48
+ }
49
+ return base.VisitTrivia(trivia);
50
+ }
51
+ }
65
52
  }
66
-
67
- }");
68
-
69
-
70
-
71
- var rewriter = new CommentRemover();
72
-
73
- var newRoot = rewriter.Visit(tree.GetRoot());
74
-
75
- Console.WriteLine(newRoot.ToFullString());
76
-
77
- }
78
-
79
-
80
-
81
- private class CommentRemover : CSharpSyntaxRewriter
82
-
83
- {
84
-
85
- public override SyntaxTrivia VisitTrivia(SyntaxTrivia trivia)
86
-
87
- {
88
-
89
- if(trivia.Kind() == SyntaxKind.SingleLineCommentTrivia
90
-
91
- || trivia.Kind() == SyntaxKind.MultiLineCommentTrivia)
92
-
93
- {
94
-
95
- return default;
96
-
97
- }
98
-
99
- return base.VisitTrivia(trivia);
100
-
101
- }
102
-
103
- }
104
-
105
- }
106
-
107
53
  }
108
-
109
54
  ```
110
-
111
55
  出力
112
-
113
- ```
56
+ ```cs
114
-
115
57
  using System;
116
58
 
117
59
 
118
60
 
119
-
120
-
121
-
122
-
123
61
  namespace ConsoleApp1
124
-
125
62
  {
126
-
127
63
  class Program
128
-
129
64
  {
130
-
131
65
  static void Main(string[] args)
132
-
133
66
  {
134
-
135
67
  Console.WriteLine("ダブルクォーテーションの中に含まれる「//」");
136
-
137
68
  }
138
-
139
69
  }
140
-
141
70
  }
142
-
143
71
  ```
144
-
145
-
146
72
 
147
73
  ---
148
74
 
149
-
150
-
151
75
  こちらのコードでは行ごと削除できてるっぽいのですが、何をしてるのかわかりません^^;
152
-
153
76
  [CommentStripper/CommentStripperCSharpSyntaxRewriter.cs at master · MichaelKetting/CommentStripper](https://github.com/MichaelKetting/CommentStripper/blob/master/CommentStripper/CommentStripperCSharpSyntaxRewriter.cs)