Skip to content

Commit 694d1b4

Browse files
committed
diff_report.mdにすべての逆アセンブルツールが出力されてしまう事象への対応
cafa53c の修正
1 parent cafa53c commit 694d1b4

4 files changed

Lines changed: 25 additions & 7 deletions

File tree

Models/FileDiffResultLists.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,9 +88,14 @@ public enum IgnoredFileLocation
8888
public static ConcurrentDictionary<string, IgnoredFileLocation> IgnoredFilesRelativePathToLocation { get; } = new ConcurrentDictionary<string, IgnoredFileLocation>(StringComparer.OrdinalIgnoreCase);
8989

9090
/// <summary>
91-
/// 実行中に使用された逆アセンブラの名称とバージョン。
91+
/// 実行中に使用された逆アセンブラの名称とバージョン(実ツール実行)
9292
/// </summary>
9393
public static ConcurrentDictionary<string, byte> DisassemblerToolVersions { get; } = new ConcurrentDictionary<string, byte>(StringComparer.OrdinalIgnoreCase);
94+
95+
/// <summary>
96+
/// キャッシュ経由で利用された逆アセンブラの名称とバージョン。
97+
/// </summary>
98+
public static ConcurrentDictionary<string, byte> DisassemblerToolVersionsFromCache { get; } = new ConcurrentDictionary<string, byte>(StringComparer.OrdinalIgnoreCase);
9499
#endregion
95100

96101
/// <summary>
@@ -126,14 +131,15 @@ public static void RecordIgnoredFile(string fileRelativePath, IgnoredFileLocatio
126131
/// </summary>
127132
/// <param name="toolName">ツール名。</param>
128133
/// <param name="version">バージョン文字列(省略可)。</param>
129-
public static void RecordDisassemblerToolVersion(string toolName, string version)
134+
public static void RecordDisassemblerToolVersion(string toolName, string version, bool fromCache = false)
130135
{
131136
if (string.IsNullOrWhiteSpace(toolName))
132137
{
133138
return;
134139
}
135140
var label = string.IsNullOrWhiteSpace(version) ? toolName : $"{toolName} (version: {version})";
136-
DisassemblerToolVersions[label] = 0;
141+
var target = fromCache ? DisassemblerToolVersionsFromCache : DisassemblerToolVersions;
142+
target[label] = 0;
137143
}
138144
}
139145
}

Services/DotNetDisassembleService.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -451,7 +451,7 @@ public async Task PrefetchIlCacheAsync(IEnumerable<string> dotNetAssemblyFilesAb
451451
if (cachedIL != null)
452452
{
453453
Interlocked.Increment(ref _ilCacheHits);
454-
RecordDisassemblerUsage(disassembleCommand, disassembleCommandAndItsVersionWithArguments);
454+
RecordDisassemblerUsage(disassembleCommand, disassembleCommandAndItsVersionWithArguments, fromCache: true);
455455
return (Success: true, IlText: cachedIL, DisassembleCommandAndItsVersionWithArguments: disassembleCommandAndItsVersionWithArguments, Error: null);
456456
}
457457
}
@@ -730,7 +730,7 @@ private static IEnumerable<string> CandidateDisassembleCommands()
730730
/// <summary>
731731
/// 使用した逆アセンブラ名/バージョンを集計します。
732732
/// </summary>
733-
private static void RecordDisassemblerUsage(string disassembleCommand, string disassembleCommandAndItsVersionWithArguments)
733+
private static void RecordDisassemblerUsage(string disassembleCommand, string disassembleCommandAndItsVersionWithArguments, bool fromCache = false)
734734
{
735735
if (string.IsNullOrWhiteSpace(disassembleCommandAndItsVersionWithArguments))
736736
{
@@ -739,7 +739,7 @@ private static void RecordDisassemblerUsage(string disassembleCommand, string di
739739

740740
var toolName = NormalizeDisassemblerName(disassembleCommand);
741741
var version = ExtractVersionFromLabel(disassembleCommandAndItsVersionWithArguments);
742-
FileDiffResultLists.RecordDisassemblerToolVersion(toolName, version);
742+
FileDiffResultLists.RecordDisassemblerToolVersion(toolName, version, fromCache);
743743
}
744744

745745
/// <summary>

Services/FolderDiffService.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ public async Task ExecuteFolderDiffAsync()
246246
FileDiffResultLists.ModifiedFilesRelativePath.Clear();
247247
FileDiffResultLists.FileRelativePathToDiffDetailDictionary.Clear();
248248
FileDiffResultLists.DisassemblerToolVersions.Clear();
249+
FileDiffResultLists.DisassemblerToolVersionsFromCache.Clear();
249250
var folderDiffCompleted = false;
250251
try
251252
{

Services/ReportGenerateService.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,18 @@ public void GenerateDiffReport(
388388
streamWriter.WriteLine(string.Format(REPORT_HEADER_IGNORED_EXTENSIONS, string.Join(REPORT_LIST_SEPARATOR, config.IgnoredExtensions)));
389389
streamWriter.WriteLine(string.Format(REPORT_HEADER_TEXT_EXTENSIONS, string.Join(REPORT_LIST_SEPARATOR, config.TextFileExtensions)));
390390
var disassemblerLabels = FileDiffResultLists.DisassemblerToolVersions.Keys.OrderBy(label => label, StringComparer.OrdinalIgnoreCase).ToList();
391-
var disassemblerText = disassemblerLabels.Count > 0 ? string.Join(REPORT_LIST_SEPARATOR, disassemblerLabels) : REPORT_HEADER_IL_DISASSEMBLERS_NONE;
391+
var disassemblerText = REPORT_HEADER_IL_DISASSEMBLERS_NONE;
392+
if (disassemblerLabels.Count > 0)
393+
{
394+
disassemblerText = string.Join(REPORT_LIST_SEPARATOR, disassemblerLabels);
395+
}
396+
else if (FileDiffResultLists.DisassemblerToolVersionsFromCache.Count > 0)
397+
{
398+
var cachedLabels = FileDiffResultLists.DisassemblerToolVersionsFromCache.Keys
399+
.OrderBy(label => label, StringComparer.OrdinalIgnoreCase)
400+
.ToList();
401+
disassemblerText = string.Join(REPORT_LIST_SEPARATOR, cachedLabels) + " (cache)";
402+
}
392403
streamWriter.WriteLine(string.Format(REPORT_HEADER_IL_DISASSEMBLERS, disassemblerText));
393404
if (!string.IsNullOrWhiteSpace(elapsedTimeString))
394405
{

0 commit comments

Comments
 (0)