Skip to content

Commit 02fc6d8

Browse files
committed
冗長部の修正
1 parent d62a4b4 commit 02fc6d8

12 files changed

Lines changed: 108 additions & 96 deletions

Common/Constants.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public static class Constants
4545
/// <summary>
4646
/// ilspyコマンド
4747
/// </summary>
48-
public const string ILSPY = "ilspycmd";
48+
public const string ILSPY_CMD = "ilspycmd";
4949

5050
/// <summary>
5151
/// 経過時間表示

Models/FileDiffResultLists.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.Collections.Concurrent;
33
using System.Collections.Generic;
44
using System.Linq;
5-
using FolderDiffIL4DotNet.Common;
65

76
namespace FolderDiffIL4DotNet.Models
87
{

Program.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,22 @@ class Program
2525
/// <summary>
2626
/// ロガー初期化メッセージ
2727
/// </summary>
28-
private const string INFO_INITIALIZING_LOGGER = "[INFO] Initializing logger...";
28+
private const string INITIALIZING_LOGGER = "Initializing logger...";
2929

3030
/// <summary>
3131
/// Logger initialized
3232
/// </summary>
33-
private const string LOG_LOGGER_INITIALIZED = "Logger initialized.";
33+
private const string LOGGER_INITIALIZED = "Logger initialized.";
3434

3535
/// <summary>
3636
/// アプリバージョン
3737
/// </summary>
38-
private const string LOG_APPLICATION_VERSION = "Application version: {0}";
38+
private const string APPLICATION_VERSION = "Application version: {0}";
3939

4040
/// <summary>
4141
/// 引数検証開始
4242
/// </summary>
43-
private const string LOG_VALIDATING_ARGS = "Validating command line arguments...";
43+
private const string VALIDATING_ARGS = "Validating command line arguments...";
4444

4545
/// <summary>
4646
/// 引数不足
@@ -115,7 +115,7 @@ class Program
115115
/// <summary>
116116
/// 終了キープロンプト
117117
/// </summary>
118-
private const string INFO_PRESS_ANY_KEY = "[INFO] Press any key to exit...";
118+
private const string PRESS_ANY_KEY = "Press any key to exit...";
119119

120120
/// <summary>
121121
/// キープロンプトエラー
@@ -163,16 +163,16 @@ static async Task Main(string[] args)
163163
try
164164
{
165165
#region Loggerの初期化(以降Loggerを使ったログ出力が可能)
166-
Console.WriteLine(INFO_INITIALIZING_LOGGER);
166+
Console.WriteLine(INITIALIZING_LOGGER);
167167
LoggerService.Initialize();
168-
LoggerService.LogMessage(LoggerService.LogLevel.Info, LOG_LOGGER_INITIALIZED, shouldOutputMessageToConsole: true);
168+
LoggerService.LogMessage(LoggerService.LogLevel.Info, LOGGER_INITIALIZED, shouldOutputMessageToConsole: true);
169169
#endregion
170170

171171
// アプリケーションのバージョンを取得
172172
_thisAppVersion = Utility.GetAppVersion(typeof(Program));
173-
LoggerService.LogMessage(LoggerService.LogLevel.Info, string.Format(LOG_APPLICATION_VERSION, _thisAppVersion), shouldOutputMessageToConsole: true);
173+
LoggerService.LogMessage(LoggerService.LogLevel.Info, string.Format(APPLICATION_VERSION, _thisAppVersion), shouldOutputMessageToConsole: true);
174174

175-
LoggerService.LogMessage(LoggerService.LogLevel.Info, LOG_VALIDATING_ARGS, shouldOutputMessageToConsole: true);
175+
LoggerService.LogMessage(LoggerService.LogLevel.Info, VALIDATING_ARGS, shouldOutputMessageToConsole: true);
176176

177177
#region コマンドライン引数の過不足およびnull, 空文字, 空白文字チェック
178178
try
@@ -298,7 +298,7 @@ static async Task Main(string[] args)
298298
{
299299
/// <see cref="NO_PAUSE">オプション指定でアプリケーションが起動された場合、または
300300
// 非対話(リダイレクトされている)の場合は、終了時にキー入力待ちを行わない
301-
if (args.Any(a => string.Equals(a, NO_PAUSE, StringComparison.OrdinalIgnoreCase))
301+
if (args.Any(arg => string.Equals(arg, NO_PAUSE, StringComparison.OrdinalIgnoreCase))
302302
|| Console.IsInputRedirected
303303
|| Console.IsOutputRedirected
304304
|| Console.IsErrorRedirected)
@@ -309,7 +309,7 @@ static async Task Main(string[] args)
309309
{
310310
try
311311
{
312-
Console.WriteLine(INFO_PRESS_ANY_KEY);
312+
Console.WriteLine(PRESS_ANY_KEY);
313313
Console.ReadKey(true);
314314
}
315315
catch (Exception ex)

Services/Caching/DotNetDisassemblerCache.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ private static (DisassemblerKind disassemblerKind, string disassemblerVersionCac
120120
return Path.GetFileName(exe)?.ToLowerInvariant() switch
121121
{
122122
Constants.DOTNET_ILDASM => (disassemblerKind: DisassemblerKind.Ildasm, disassemblerVersionCacheKey: Constants.DOTNET_ILDASM, disassemblerExe: exe),
123-
Constants.ILSPY => (disassemblerKind: DisassemblerKind.Ilspy, disassemblerVersionCacheKey: Constants.ILSPY, disassemblerExe: exe),
123+
Constants.ILSPY_CMD => (disassemblerKind: DisassemblerKind.Ilspy, disassemblerVersionCacheKey: Constants.ILSPY_CMD, disassemblerExe: exe),
124124
_ => (disassemblerKind: DisassemblerKind.Unknown, disassemblerVersionCacheKey: null, disassemblerExe: null)
125125
};
126126
}
@@ -215,7 +215,7 @@ private static async Task<string> GetVersionForIlspyAsync(string disassemblerVer
215215
}
216216

217217
// いずれの方法でも取得できない場合はエラーとして扱う。
218-
throw new InvalidOperationException($"{ERROR_FAILED_TO_GET_VERSION} '{Constants.ILSPY}' ({nameof(disassemblerVersionCacheKey)}='{disassemblerVersionCacheKey}').");
218+
throw new InvalidOperationException($"{ERROR_FAILED_TO_GET_VERSION} '{Constants.ILSPY_CMD}' ({nameof(disassemblerVersionCacheKey)}='{disassemblerVersionCacheKey}').");
219219
}
220220

221221
/// <summary>

Services/Caching/ILCache.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -336,10 +336,10 @@ public Task PrecomputeAsync(IEnumerable<string> fileAbsolutePaths, int maxParall
336336
}
337337
});
338338

339-
LoggerService.LogMessage(
340-
LoggerService.LogLevel.Info,
341-
string.Format(LOG_PRECOMPUTE_MD5_COMPLETE, files.Count),
342-
shouldOutputMessageToConsole: true);
339+
LoggerService.LogMessage(
340+
LoggerService.LogLevel.Info,
341+
string.Format(LOG_PRECOMPUTE_MD5_COMPLETE, files.Count),
342+
shouldOutputMessageToConsole: true);
343343
}
344344
catch
345345
{

Services/Caching/TimestampCache.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System;
22
using System.Collections.Generic;
3-
using FolderDiffIL4DotNet.Common;
43
using FolderDiffIL4DotNet.Utils;
54

65
namespace FolderDiffIL4DotNet.Services.Caching

Services/ConfigService.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.IO;
33
using System.Text.Json;
44
using System.Threading.Tasks;
5-
using FolderDiffIL4DotNet.Common;
65
using FolderDiffIL4DotNet.Models;
76

87
namespace FolderDiffIL4DotNet.Services

Services/DotNetDisassembleService.cs

Lines changed: 20 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ public sealed class DotNetDisassembleService
129129
"If it's not installed, install it with:\n" +
130130
" " + Constants.DOTNET_MUXER + " tool install -g " + Constants.DOTNET_ILDASM + "\n" +
131131
"Also ensure that ~/" + DOTNET_HOME_DIRNAME + "/" + DOTNET_TOOLS_DIRNAME + " is included in your PATH.\n" +
132-
"Alternatively, you can install " + Constants.ILSPY + " and we will use it automatically:\n" +
133-
" " + Constants.DOTNET_MUXER + " tool install -g " + Constants.ILSPY;
132+
"Alternatively, you can install " + Constants.ILSPY_CMD + " and we will use it automatically:\n" +
133+
" " + Constants.DOTNET_MUXER + " tool install -g " + Constants.ILSPY_CMD;
134134
#endregion
135135
private enum DisassemblerKind
136136
{
@@ -223,14 +223,14 @@ public DotNetDisassembleService(ConfigSettings config, ILCache ilCache)
223223
try
224224
{
225225
// キャッシュ確認とプロセス起動を内包した TryDisassembleAsync を実行。
226-
var attempt = await TryDisassembleAsync(candidateDisassembleCommand, dotNetAssemblyfileAbsolutePath);
227-
if (attempt.Success)
226+
var (success, ilText, disassembleCommandAndItsVersionWithArguments, error) = await TryDisassembleAsync(candidateDisassembleCommand, dotNetAssemblyfileAbsolutePath);
227+
if (success)
228228
{
229-
return (attempt.IlText, attempt.DisassembleCommandAndItsVersionWithArguments);
229+
return (ilText, disassembleCommandAndItsVersionWithArguments);
230230
}
231-
if (attempt.Error != null)
231+
if (error != null)
232232
{
233-
lastError = attempt.Error;
233+
lastError = error;
234234
}
235235
}
236236
catch (System.ComponentModel.Win32Exception ex)
@@ -272,8 +272,8 @@ public async Task PrefetchIlCacheAsync(IEnumerable<string> dotNetAssemblyFilesAb
272272
throw new ArgumentOutOfRangeException(nameof(maxParallel), maxParallel, Constants.ERROR_MAX_PARALLEL);
273273
}
274274

275-
// 入力列を ICollection に引き上げ(必要なら ToList)て、件数ゼロなら処理をスキップ。
276-
var assemblies = dotNetAssemblyFilesAbsolutePaths as ICollection<string> ?? dotNetAssemblyFilesAbsolutePaths.ToList();
275+
// 入力列を ICollection に引き上げ(必要なら List を生成)て、件数ゼロなら処理をスキップ。
276+
var assemblies = dotNetAssemblyFilesAbsolutePaths as ICollection<string> ?? [.. dotNetAssemblyFilesAbsolutePaths];
277277
if (assemblies.Count == 0)
278278
{
279279
return;
@@ -334,7 +334,7 @@ public async Task PrefetchIlCacheAsync(IEnumerable<string> dotNetAssemblyFilesAb
334334
// dotnet muxer は "dotnet dotnet-ildasm" の形で実行されるため、相対パス・絶対パスの双方を試す。
335335
disassembleCommandsWithArguments = [$"{Constants.DOTNET_MUXER} {Constants.DOTNET_ILDASM} {dotNetAssemblyNameOnly}", $"{Constants.DOTNET_MUXER} {Constants.DOTNET_ILDASM} {dotNetAssemblyFileAbsolutePath}"];
336336
}
337-
else if (string.Equals(disassemblerFileName, Constants.ILSPY, StringComparison.OrdinalIgnoreCase))
337+
else if (string.Equals(disassemblerFileName, Constants.ILSPY_CMD, StringComparison.OrdinalIgnoreCase))
338338
{
339339
// ilspycmd は /il スイッチを付与する必要があるため、これも付けた状態で 2 パターン生成。
340340
disassembleCommandsWithArguments = [$"{disassemblerFileName} {ILSPY_FLAG_IL} {dotNetAssemblyNameOnly}", $"{disassemblerFileName} {ILSPY_FLAG_IL} {dotNetAssemblyFileAbsolutePath}"];
@@ -402,14 +402,14 @@ public async Task PrefetchIlCacheAsync(IEnumerable<string> dotNetAssemblyFilesAb
402402
{
403403
foreach (var argset in BuildArgSets(disassembleCommand, dotNetAssemblyFileAbsolutePath, tempAsciiPath))
404404
{
405-
var result = await TryDisassembleWithArguments(disassembleCommand, dotNetAssemblyFileAbsolutePath, argset);
406-
if (result.Success)
405+
var (success, ilText, disassembleCommandAndItsVersionWithArguments, error) = await TryDisassembleWithArguments(disassembleCommand, dotNetAssemblyFileAbsolutePath, argset);
406+
if (success)
407407
{
408-
return result;
408+
return (success, ilText, disassembleCommandAndItsVersionWithArguments, error);
409409
}
410-
if (result.Error != null)
410+
if (error != null)
411411
{
412-
lastError = result.Error;
412+
lastError = error;
413413
}
414414
}
415415
}
@@ -521,7 +521,7 @@ public async Task PrefetchIlCacheAsync(IEnumerable<string> dotNetAssemblyFilesAb
521521
/// <summary>
522522
/// 指定コマンドが ilspycmd かを判定します。
523523
/// </summary>
524-
private static bool IsIlspyCommand(string command) => string.Equals(Path.GetFileName(command), Constants.ILSPY, StringComparison.OrdinalIgnoreCase);
524+
private static bool IsIlspyCommand(string command) => string.Equals(Path.GetFileName(command), Constants.ILSPY_CMD, StringComparison.OrdinalIgnoreCase);
525525

526526
/// <summary>
527527
/// パスに非ASCII文字がある場合に、ASCII の一時パスへコピーしたファイルのパスを返します。該当しなければ null。
@@ -574,7 +574,7 @@ private static string CreateAsciiTempCopyIfNeeded(string dotNetAssemblyFileAbsol
574574
{
575575
argSets.Add((Environment.CurrentDirectory, [ILSPY_FLAG_IL, tempAsciiPath], null));
576576
}
577-
string MakeTempOut() => Path.Combine(Path.GetTempPath(), $"ilspy_out_{Guid.NewGuid():N}.il");
577+
static string MakeTempOut() => Path.Combine(Path.GetTempPath(), $"ilspy_out_{Guid.NewGuid():N}.il");
578578
var out1 = MakeTempOut();
579579
argSets.Add((disassemblerFileDirectoryAbsolutePath, [ILSPY_FLAG_IL, ILSPY_FLAG_OUTPUT, out1, disassemblerFileNameOnly], out1));
580580
var out2 = MakeTempOut();
@@ -591,7 +591,7 @@ private static string CreateAsciiTempCopyIfNeeded(string dotNetAssemblyFileAbsol
591591
/// <summary>
592592
/// ベースラベルにツールバージョンを付加して返します。取得失敗時はベースラベルをそのまま返します。
593593
/// </summary>
594-
private async Task<string> GetDisassembleCommandAndItsVersionWithArgumentsAsync(string disassembleCommandWithArguments)
594+
private static async Task<string> GetDisassembleCommandAndItsVersionWithArgumentsAsync(string disassembleCommandWithArguments)
595595
{
596596
try
597597
{
@@ -646,35 +646,6 @@ private async Task<string> GetDisassembleCommandAndItsVersionWithArgumentsAsync(
646646
}
647647
}
648648

649-
/// <summary>
650-
/// コマンドラベルから逆アセンブラの種類・キャッシュキー・実行ファイル名を解決します。
651-
/// Dotnet muxer 経由のケースや ilspycmd 単体起動など、既知のパターンを判定して適切なキーへ正規化します。
652-
/// </summary>
653-
private static (DisassemblerKind kind, string toolKey, string disassemblerExe) ResolveDisassembler(string commandLabel)
654-
{
655-
var tokens = Utility.TokenizeCommand(commandLabel);
656-
if (tokens.Count == 0)
657-
{
658-
throw new InvalidOperationException($"Failed to determine disassembler version: invalid command label '{commandLabel}'.");
659-
}
660-
661-
if (string.Equals(tokens[0], Constants.DOTNET_MUXER, StringComparison.OrdinalIgnoreCase))
662-
{
663-
if (tokens.Count >= 2 && string.Equals(tokens[1], Constants.DOTNET_ILDASM, StringComparison.OrdinalIgnoreCase))
664-
{
665-
return (kind: DisassemblerKind.DotnetIldasm, toolKey: $"{Constants.DOTNET_MUXER} {Constants.DOTNET_ILDASM}", disassemblerExe: Constants.DOTNET_MUXER);
666-
}
667-
}
668-
669-
var exe = tokens[0];
670-
return Path.GetFileName(exe)?.ToLowerInvariant() switch
671-
{
672-
Constants.DOTNET_ILDASM => (kind: DisassemblerKind.Ildasm, toolKey: Constants.DOTNET_ILDASM, disassemblerExe: exe),
673-
Constants.ILSPY => (kind: DisassemblerKind.Ilspy, toolKey: Constants.ILSPY, disassemblerExe: exe),
674-
_ => (kind: DisassemblerKind.Unknown, toolKey: null, disassemblerExe: null)
675-
};
676-
}
677-
678649
/// <summary>
679650
/// 指定ツールがブラックリスト化されているかを判定。一定期間内に失敗が閾値を超えた場合は解除
680651
/// </summary>
@@ -745,8 +716,8 @@ private static IEnumerable<string> CandidateDisassembleCommands()
745716
yield return Constants.DOTNET_ILDASM;
746717
yield return Path.Combine(UserDotnetToolsDirectory, Constants.DOTNET_ILDASM);
747718
yield return Constants.DOTNET_MUXER;
748-
yield return Constants.ILSPY;
749-
yield return Path.Combine(UserDotnetToolsDirectory, Constants.ILSPY);
719+
yield return Constants.ILSPY_CMD;
720+
yield return Path.Combine(UserDotnetToolsDirectory, Constants.ILSPY_CMD);
750721
}
751722
#endregion
752723
}

0 commit comments

Comments
 (0)