From 4094da6e6c99328960d7afff259545e3b2dfadf4 Mon Sep 17 00:00:00 2001 From: James Stout Date: Fri, 22 May 2020 20:51:00 +0800 Subject: [PATCH 1/5] fixed undeclared var project_path --- lib/fui/project.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/fui/project.rb b/lib/fui/project.rb index 9f8bfc1..477c03d 100644 --- a/lib/fui/project.rb +++ b/lib/fui/project.rb @@ -22,7 +22,7 @@ def bridging_headers(verbose) path_tokens = tokens[1].split('/') bridging_header = path_tokens[path_tokens.length - 1] - puts "Bridging Header Found: #{bridging_header} in #{project_path}." if verbose + puts "Bridging Header Found: #{bridging_header} in #{path}." if verbose bridging_headers << bridging_header end bridging_headers.uniq From 252fc288e05f39e65a8d8f2e7d32e75a196d4cd2 Mon Sep 17 00:00:00 2001 From: James Stout Date: Fri, 22 May 2020 20:51:54 +0800 Subject: [PATCH 2/5] check for valid encoding and fix if invalid --- lib/fui/finder.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/fui/finder.rb b/lib/fui/finder.rb index 41c009b..ad3c5b3 100644 --- a/lib/fui/finder.rb +++ b/lib/fui/finder.rb @@ -50,6 +50,10 @@ def unused_references(&block) private + def fix_encoding(file_contents) + file_contents.encode!('UTF-8', 'binary', invalid: :replace, undef: :replace, replace: '') + end + # Find all files for which the block yields. def find(path) results = [] @@ -89,6 +93,10 @@ def process_code(references, path) headers.each do |header| filename_without_extension = File.basename(path, File.extname(path)) file_contents = File.read(file) + unless file_contents.valid_encoding? + puts "Invalid encoding for #{filename_without_extension}" if options[:verbose] + file_contents = fix_encoding(file_contents) + end global_import_exists = global_imported(file_contents, header) local_import_exists = local_imported(file_contents, header) references[header] << path if filename_without_extension != header.filename_without_extension && (local_import_exists || global_import_exists) From 8fa9dddbba273130746d7b23fbe0c8fd2a4df9de Mon Sep 17 00:00:00 2001 From: James Stout Date: Fri, 22 May 2020 20:53:04 +0800 Subject: [PATCH 3/5] added fixture that triggered the error in my project Turns out it was am AppleDouble encoded Macintosh file --- .gitignore | 1 + spec/fixtures/m/._MyProjectTests.m | Bin 0 -> 4096 bytes 2 files changed, 1 insertion(+) create mode 100644 spec/fixtures/m/._MyProjectTests.m diff --git a/.gitignore b/.gitignore index bd0feec..ea70aae 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ Gemfile.lock pkg .bundle xcuserdata +!._* \ No newline at end of file diff --git a/spec/fixtures/m/._MyProjectTests.m b/spec/fixtures/m/._MyProjectTests.m new file mode 100644 index 0000000000000000000000000000000000000000..6c201698afd4faaed9497ce9dcdddd6c2128493a GIT binary patch literal 4096 zcmZQz6=P>$Vqox1Ojhs@R)|o50+1L3ClDJkFz{^v(m+1nBL)UWIUt(=a103v3boVh zhv;Bf08}o3riBs6hl)!j=jZAr78K;9>g6OBmy{N#rlcg6q$&plgY?L6oe&42|13Dp z1)@j6Xb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD;0ggyXA^|MKrSRBvsj@h zwK%`DC^=OjEx#yRAv3QeHLoNyKQA#Sr&1v&HLXM;DJL;68`u|y>Kf7%s{i3$kztVg G{~rKzJ}Y?u literal 0 HcmV?d00001 From 95604995a24fb09475dda6afaeaa31ad83756312 Mon Sep 17 00:00:00 2001 From: James Stout Date: Fri, 22 May 2020 20:55:59 +0800 Subject: [PATCH 4/5] Test for fixing encoding Added an invalid byte to a test header file, tests with unused_class would fail if fix_encoding is not called. --- spec/fixtures/m/unused_class.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/fixtures/m/unused_class.h b/spec/fixtures/m/unused_class.h index cbc323c..9d8bfcd 100644 --- a/spec/fixtures/m/unused_class.h +++ b/spec/fixtures/m/unused_class.h @@ -3,6 +3,6 @@ // FUI // -@interface UnusedClass +@interface UnusedClass\xAD @end From 39f353a4eacdcaf952cecc5c3c7d32770a5a8523 Mon Sep 17 00:00:00 2001 From: James Stout Date: Fri, 22 May 2020 20:59:18 +0800 Subject: [PATCH 5/5] added newline at EOF Signed-off-by: James Stout --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ea70aae..4b963ac 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ Gemfile.lock pkg .bundle xcuserdata -!._* \ No newline at end of file +!._*