From 9585818a90654167f01a87d3783e722bfa4a03e1 Mon Sep 17 00:00:00 2001 From: Milan Burda Date: Thu, 2 May 2019 14:05:37 +0200 Subject: [PATCH] chore: add clang-format and limited linting for Objective-C sources (#18104) --- atom/app/atom_login_helper.mm | 4 ++ atom/app/atom_main_delegate_mac.mm | 2 + atom/browser/api/atom_api_app_mac.mm | 4 +- atom/browser/api/atom_api_app_mas.mm | 6 ++- .../api/atom_api_browser_window_mac.mm | 3 ++ atom/browser/api/atom_api_menu_mac.mm | 3 ++ .../browser/api/atom_api_power_monitor_mac.mm | 4 +- .../api/atom_api_system_preferences_mac.mm | 3 ++ atom/browser/auto_updater_mac.mm | 4 +- atom/browser/browser_mac.mm | 7 ++- atom/browser/mac/atom_application.mm | 4 ++ atom/browser/mac/atom_application_delegate.mm | 5 +- atom/browser/mac/dict_util.mm | 4 ++ atom/browser/mac/in_app_purchase.mm | 3 ++ atom/browser/mac/in_app_purchase_observer.mm | 2 + atom/browser/mac/in_app_purchase_product.mm | 4 ++ atom/browser/native_browser_view_mac.mm | 2 + atom/browser/native_window_mac.mm | 1 + .../notifications/mac/cocoa_notification.mm | 3 ++ .../mac/notification_center_delegate.mm | 2 + atom/browser/ui/certificate_trust_mac.mm | 4 ++ atom/browser/ui/cocoa/atom_bundle_mover.mm | 23 ++++------ atom/browser/ui/cocoa/atom_menu_controller.mm | 4 +- .../ui/cocoa/atom_ns_window_delegate.mm | 2 + atom/browser/ui/cocoa/atom_touch_bar.mm | 3 ++ atom/browser/ui/drag_util_mac.mm | 2 + atom/browser/ui/file_dialog_mac.mm | 4 ++ atom/browser/ui/message_box_mac.mm | 4 ++ atom/browser/ui/tray_icon_cocoa.mm | 3 ++ atom/common/api/atom_api_native_image_mac.mm | 3 ++ atom/common/application_info_mac.mm | 2 + .../crash_reporter/crash_reporter_mac.mm | 4 ++ atom/common/platform_util_mac.mm | 3 ++ package.json | 1 + script/lint.js | 46 ++++++++++++++----- 35 files changed, 142 insertions(+), 36 deletions(-) diff --git a/atom/app/atom_login_helper.mm b/atom/app/atom_login_helper.mm index faff0b814432..7e9585d80b6a 100644 --- a/atom/app/atom_login_helper.mm +++ b/atom/app/atom_login_helper.mm @@ -1,3 +1,7 @@ +// Copyright (c) 2017 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + #import int main(int argc, char* argv[]) { diff --git a/atom/app/atom_main_delegate_mac.mm b/atom/app/atom_main_delegate_mac.mm index 5b60ea44639a..4f7dbc515f7e 100644 --- a/atom/app/atom_main_delegate_mac.mm +++ b/atom/app/atom_main_delegate_mac.mm @@ -4,6 +4,8 @@ #include "atom/app/atom_main_delegate.h" +#include + #include "atom/browser/mac/atom_application.h" #include "atom/common/application_info.h" #include "atom/common/mac/main_application_bundle.h" diff --git a/atom/browser/api/atom_api_app_mac.mm b/atom/browser/api/atom_api_app_mac.mm index cb093243ec94..46e5dc345777 100644 --- a/atom/browser/api/atom_api_app_mac.mm +++ b/atom/browser/api/atom_api_app_mac.mm @@ -33,6 +33,6 @@ void App::SetAppLogsPath(mate::Arguments* args) { } } -} // namespace atom - } // namespace api + +} // namespace atom diff --git a/atom/browser/api/atom_api_app_mas.mm b/atom/browser/api/atom_api_app_mas.mm index 05e102ac4eea..94c01b1d8133 100644 --- a/atom/browser/api/atom_api_app_mas.mm +++ b/atom/browser/api/atom_api_app_mas.mm @@ -4,6 +4,8 @@ #include "atom/browser/api/atom_api_app.h" +#include + #import #include "base/strings/sys_string_conversions.h" @@ -59,6 +61,6 @@ base::RepeatingCallback App::StartAccessingSecurityScopedResource( bookmarkUrl); } -} // namespace atom - } // namespace api + +} // namespace atom diff --git a/atom/browser/api/atom_api_browser_window_mac.mm b/atom/browser/api/atom_api_browser_window_mac.mm index 829a07eb57ff..55c3bad7dd3c 100644 --- a/atom/browser/api/atom_api_browser_window_mac.mm +++ b/atom/browser/api/atom_api_browser_window_mac.mm @@ -4,6 +4,9 @@ #include "atom/browser/api/atom_api_browser_window.h" +#include +#include + #import #include "atom/browser/native_browser_view.h" diff --git a/atom/browser/api/atom_api_menu_mac.mm b/atom/browser/api/atom_api_menu_mac.mm index 728bdf8f4c2d..74ecce1b3ca7 100644 --- a/atom/browser/api/atom_api_menu_mac.mm +++ b/atom/browser/api/atom_api_menu_mac.mm @@ -4,6 +4,9 @@ #import "atom/browser/api/atom_api_menu_mac.h" +#include +#include + #include "atom/browser/native_window.h" #include "atom/browser/unresponsive_suppressor.h" #include "atom/common/node_includes.h" diff --git a/atom/browser/api/atom_api_power_monitor_mac.mm b/atom/browser/api/atom_api_power_monitor_mac.mm index f1ff09e19821..d84680680ec6 100644 --- a/atom/browser/api/atom_api_power_monitor_mac.mm +++ b/atom/browser/api/atom_api_power_monitor_mac.mm @@ -4,7 +4,9 @@ #include "atom/browser/api/atom_api_power_monitor.h" -#include +#include + +#import #import @interface MacLockMonitor : NSObject { diff --git a/atom/browser/api/atom_api_system_preferences_mac.mm b/atom/browser/api/atom_api_system_preferences_mac.mm index 18930f8343e0..4b00710b77f1 100644 --- a/atom/browser/api/atom_api_system_preferences_mac.mm +++ b/atom/browser/api/atom_api_system_preferences_mac.mm @@ -5,6 +5,9 @@ #include "atom/browser/api/atom_api_system_preferences.h" #include +#include +#include +#include #import #import diff --git a/atom/browser/auto_updater_mac.mm b/atom/browser/auto_updater_mac.mm index 80bb61b480cc..bd26e568fe01 100644 --- a/atom/browser/auto_updater_mac.mm +++ b/atom/browser/auto_updater_mac.mm @@ -4,6 +4,8 @@ #include "atom/browser/auto_updater.h" +#include + #import #import #import @@ -29,7 +31,7 @@ SQRLUpdater* g_updater = nil; namespace { bool g_update_available = false; -std::string update_url_ = ""; +std::string update_url_ = ""; // NOLINT(runtime/string) } // namespace diff --git a/atom/browser/browser_mac.mm b/atom/browser/browser_mac.mm index dce333a86e17..f76d76438040 100644 --- a/atom/browser/browser_mac.mm +++ b/atom/browser/browser_mac.mm @@ -4,6 +4,9 @@ #include "atom/browser/browser.h" +#include +#include + #include "atom/browser/mac/atom_application.h" #include "atom/browser/mac/atom_application_delegate.h" #include "atom/browser/mac/dict_util.h" @@ -282,9 +285,9 @@ void Browser::SetLoginItemSettings(LoginItemSettings settings) { LOG(ERROR) << "Unable to set login item enabled on sandboxed app."; } #else - if (settings.open_at_login) + if (settings.open_at_login) { base::mac::AddToLoginItems(settings.open_as_hidden); - else { + } else { RemoveFromLoginItems(); } #endif diff --git a/atom/browser/mac/atom_application.mm b/atom/browser/mac/atom_application.mm index eb0a90890fae..9b0f9780f601 100644 --- a/atom/browser/mac/atom_application.mm +++ b/atom/browser/mac/atom_application.mm @@ -4,6 +4,10 @@ #import "atom/browser/mac/atom_application.h" +#include +#include +#include + #include "atom/browser/browser.h" #import "atom/browser/mac/atom_application_delegate.h" #include "atom/browser/mac/dict_util.h" diff --git a/atom/browser/mac/atom_application_delegate.mm b/atom/browser/mac/atom_application_delegate.mm index f2991a9422e4..4cca2133f83f 100644 --- a/atom/browser/mac/atom_application_delegate.mm +++ b/atom/browser/mac/atom_application_delegate.mm @@ -4,6 +4,9 @@ #import "atom/browser/mac/atom_application_delegate.h" +#include +#include + #include "atom/browser/browser.h" #import "atom/browser/mac/atom_application.h" #include "atom/browser/mac/dict_util.h" @@ -24,7 +27,7 @@ static base::mac::ScopedObjCClassSwizzler* g_swizzle_imk_input_session; @end @implementation OOMDisabledIMKInputSession - (void)_coreAttributesFromRange:(NSRange)range - whichAttributes:(long long)attributes + whichAttributes:(long long)attributes // NOLINT(runtime/int) completionHandler:(void (^)(void))block { // The allocator flag is per-process, so other threads may temporarily // not have fatal OOM occur while this method executes, but it is better diff --git a/atom/browser/mac/dict_util.mm b/atom/browser/mac/dict_util.mm index 74cd4b744649..5803009864b6 100644 --- a/atom/browser/mac/dict_util.mm +++ b/atom/browser/mac/dict_util.mm @@ -4,6 +4,10 @@ #include "atom/browser/mac/dict_util.h" +#include +#include +#include + #include "base/json/json_writer.h" #include "base/strings/sys_string_conversions.h" #include "base/values.h" diff --git a/atom/browser/mac/in_app_purchase.mm b/atom/browser/mac/in_app_purchase.mm index 8fafcb2d04c5..878cf8f5519f 100644 --- a/atom/browser/mac/in_app_purchase.mm +++ b/atom/browser/mac/in_app_purchase.mm @@ -4,6 +4,9 @@ #include "atom/browser/mac/in_app_purchase.h" +#include +#include + #include "base/bind.h" #include "base/strings/sys_string_conversions.h" #include "base/task/post_task.h" diff --git a/atom/browser/mac/in_app_purchase_observer.mm b/atom/browser/mac/in_app_purchase_observer.mm index bec5966bbfca..29ef611a8545 100644 --- a/atom/browser/mac/in_app_purchase_observer.mm +++ b/atom/browser/mac/in_app_purchase_observer.mm @@ -4,6 +4,8 @@ #include "atom/browser/mac/in_app_purchase_observer.h" +#include + #include "base/bind.h" #include "base/strings/sys_string_conversions.h" #include "base/task/post_task.h" diff --git a/atom/browser/mac/in_app_purchase_product.mm b/atom/browser/mac/in_app_purchase_product.mm index c4a5c575ac80..906a9784e7e7 100644 --- a/atom/browser/mac/in_app_purchase_product.mm +++ b/atom/browser/mac/in_app_purchase_product.mm @@ -4,6 +4,10 @@ #include "atom/browser/mac/in_app_purchase_product.h" +#include +#include +#include + #include "base/bind.h" #include "base/strings/sys_string_conversions.h" #include "base/task/post_task.h" diff --git a/atom/browser/native_browser_view_mac.mm b/atom/browser/native_browser_view_mac.mm index cf6ed60cb3b3..e9db5ab8307b 100644 --- a/atom/browser/native_browser_view_mac.mm +++ b/atom/browser/native_browser_view_mac.mm @@ -4,6 +4,8 @@ #include "atom/browser/native_browser_view_mac.h" +#include + #include "atom/browser/ui/inspectable_web_contents.h" #include "atom/browser/ui/inspectable_web_contents_view.h" #include "skia/ext/skia_utils_mac.h" diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index f1f1ed4644b5..5df256778483 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -8,6 +8,7 @@ #include #include +#include #include "atom/browser/native_browser_view_mac.h" #include "atom/browser/ui/cocoa/atom_native_widget_mac.h" diff --git a/atom/browser/notifications/mac/cocoa_notification.mm b/atom/browser/notifications/mac/cocoa_notification.mm index 057de703262f..4da4d1a1c3d6 100644 --- a/atom/browser/notifications/mac/cocoa_notification.mm +++ b/atom/browser/notifications/mac/cocoa_notification.mm @@ -4,6 +4,9 @@ #include "atom/browser/notifications/mac/cocoa_notification.h" +#include +#include + #include "atom/browser/notifications/notification_delegate.h" #include "atom/browser/notifications/notification_presenter.h" #include "base/mac/mac_util.h" diff --git a/atom/browser/notifications/mac/notification_center_delegate.mm b/atom/browser/notifications/mac/notification_center_delegate.mm index 389e6a23f431..ce2a15fbc3a9 100644 --- a/atom/browser/notifications/mac/notification_center_delegate.mm +++ b/atom/browser/notifications/mac/notification_center_delegate.mm @@ -4,6 +4,8 @@ #include "atom/browser/notifications/mac/notification_center_delegate.h" +#include + #include "atom/browser/notifications/mac/cocoa_notification.h" #include "atom/browser/notifications/mac/notification_presenter_mac.h" diff --git a/atom/browser/ui/certificate_trust_mac.mm b/atom/browser/ui/certificate_trust_mac.mm index fda5766d95c3..161e10c09306 100644 --- a/atom/browser/ui/certificate_trust_mac.mm +++ b/atom/browser/ui/certificate_trust_mac.mm @@ -4,6 +4,10 @@ #include "atom/browser/ui/certificate_trust.h" +#include +#include +#include + #import #import diff --git a/atom/browser/ui/cocoa/atom_bundle_mover.mm b/atom/browser/ui/cocoa/atom_bundle_mover.mm index 95a527673f6b..73a4aeaed958 100644 --- a/atom/browser/ui/cocoa/atom_bundle_mover.mm +++ b/atom/browser/ui/cocoa/atom_bundle_mover.mm @@ -4,6 +4,8 @@ #import "atom/browser/ui/cocoa/atom_bundle_mover.h" +#include + #import #import #import @@ -389,19 +391,14 @@ bool AtomBundleMover::Trash(NSString* path) { // This allows us to trash the app in macOS Sierra even when the app is // running inside an app translocation image. if (!result) { + auto* code = R"str( +set theFile to POSIX file "%@" +tell application "Finder" +move theFile to trash +end tell +)str"; NSAppleScript* appleScript = [[[NSAppleScript alloc] - initWithSource: - [NSString - stringWithFormat: - @"\ - set theFile to POSIX file \"%@\" " - @"\n\ - tell application \"Finder\" " - @"\n\ - move theFile to trash \n\ - " - @" end tell", - path]] autorelease]; + initWithSource:[NSString stringWithFormat:@(code), path]] autorelease]; NSDictionary* errorDict = nil; NSAppleEventDescriptor* scriptResult = [appleScript executeAndReturnError:&errorDict]; @@ -425,4 +422,4 @@ bool AtomBundleMover::DeleteOrTrash(NSString* path) { } // namespace ui -} // namespace atom \ No newline at end of file +} // namespace atom diff --git a/atom/browser/ui/cocoa/atom_menu_controller.mm b/atom/browser/ui/cocoa/atom_menu_controller.mm index d76950f0ba16..403ed7a189af 100644 --- a/atom/browser/ui/cocoa/atom_menu_controller.mm +++ b/atom/browser/ui/cocoa/atom_menu_controller.mm @@ -182,8 +182,8 @@ static base::scoped_nsobject recentDocumentsMenuSwap_; // Empties the source menu items to the destination. - (void)moveMenuItems:(NSMenu*)source to:(NSMenu*)destination { - const long count = [source numberOfItems]; - for (long index = 0; index < count; index++) { + const NSInteger count = [source numberOfItems]; + for (NSInteger index = 0; index < count; index++) { NSMenuItem* removedItem = [[[source itemAtIndex:0] retain] autorelease]; [source removeItemAtIndex:0]; [destination addItem:removedItem]; diff --git a/atom/browser/ui/cocoa/atom_ns_window_delegate.mm b/atom/browser/ui/cocoa/atom_ns_window_delegate.mm index 7e311991a9b7..4d6fc6b452cf 100644 --- a/atom/browser/ui/cocoa/atom_ns_window_delegate.mm +++ b/atom/browser/ui/cocoa/atom_ns_window_delegate.mm @@ -4,6 +4,8 @@ #include "atom/browser/ui/cocoa/atom_ns_window_delegate.h" +#include + #include "atom/browser/browser.h" #include "atom/browser/native_window_mac.h" #include "atom/browser/ui/cocoa/atom_preview_item.h" diff --git a/atom/browser/ui/cocoa/atom_touch_bar.mm b/atom/browser/ui/cocoa/atom_touch_bar.mm index 7cb265e3292a..8142034c9fa6 100644 --- a/atom/browser/ui/cocoa/atom_touch_bar.mm +++ b/atom/browser/ui/cocoa/atom_touch_bar.mm @@ -4,6 +4,9 @@ #import "atom/browser/ui/cocoa/atom_touch_bar.h" +#include +#include + #include "atom/common/color_util.h" #include "atom/common/native_mate_converters/image_converter.h" #include "base/strings/sys_string_conversions.h" diff --git a/atom/browser/ui/drag_util_mac.mm b/atom/browser/ui/drag_util_mac.mm index a1306d035f50..73a539e990a5 100644 --- a/atom/browser/ui/drag_util_mac.mm +++ b/atom/browser/ui/drag_util_mac.mm @@ -4,6 +4,8 @@ #import +#include + #include "atom/browser/ui/drag_util.h" #include "base/files/file_path.h" #include "base/strings/sys_string_conversions.h" diff --git a/atom/browser/ui/file_dialog_mac.mm b/atom/browser/ui/file_dialog_mac.mm index d6aaecb93e06..69bf816f16d5 100644 --- a/atom/browser/ui/file_dialog_mac.mm +++ b/atom/browser/ui/file_dialog_mac.mm @@ -4,6 +4,10 @@ #include "atom/browser/ui/file_dialog.h" +#include +#include +#include + #import #import diff --git a/atom/browser/ui/message_box_mac.mm b/atom/browser/ui/message_box_mac.mm index 64a7b1a54434..ba9676beb8ea 100644 --- a/atom/browser/ui/message_box_mac.mm +++ b/atom/browser/ui/message_box_mac.mm @@ -4,6 +4,10 @@ #include "atom/browser/ui/message_box.h" +#include +#include +#include + #import #include "atom/browser/native_window.h" diff --git a/atom/browser/ui/tray_icon_cocoa.mm b/atom/browser/ui/tray_icon_cocoa.mm index 8fffeb64e7f1..62e5a7abd18f 100644 --- a/atom/browser/ui/tray_icon_cocoa.mm +++ b/atom/browser/ui/tray_icon_cocoa.mm @@ -4,6 +4,9 @@ #include "atom/browser/ui/tray_icon_cocoa.h" +#include +#include + #include "atom/browser/ui/cocoa/NSString+ANSI.h" #include "atom/browser/ui/cocoa/atom_menu_controller.h" #include "base/strings/sys_string_conversions.h" diff --git a/atom/common/api/atom_api_native_image_mac.mm b/atom/common/api/atom_api_native_image_mac.mm index 111b00ef9b3d..96a652e4a621 100644 --- a/atom/common/api/atom_api_native_image_mac.mm +++ b/atom/common/api/atom_api_native_image_mac.mm @@ -4,6 +4,9 @@ #include "atom/common/api/atom_api_native_image.h" +#include +#include + #import #include "base/strings/sys_string_conversions.h" diff --git a/atom/common/application_info_mac.mm b/atom/common/application_info_mac.mm index 163d0e22c75e..7ce72c1035d0 100644 --- a/atom/common/application_info_mac.mm +++ b/atom/common/application_info_mac.mm @@ -4,6 +4,8 @@ #import "atom/common/application_info.h" +#include + #import "atom/common/mac/main_application_bundle.h" #import "base/mac/foundation_util.h" #import "base/strings/sys_string_conversions.h" diff --git a/atom/common/crash_reporter/crash_reporter_mac.mm b/atom/common/crash_reporter/crash_reporter_mac.mm index 636ce4b065fd..be8925b08a5c 100644 --- a/atom/common/crash_reporter/crash_reporter_mac.mm +++ b/atom/common/crash_reporter/crash_reporter_mac.mm @@ -4,7 +4,11 @@ #include "atom/common/crash_reporter/crash_reporter_mac.h" +#include +#include #include +#include +#include #include "base/files/file_util.h" #include "base/mac/bundle_locations.h" diff --git a/atom/common/platform_util_mac.mm b/atom/common/platform_util_mac.mm index 3b83e3a8f52f..7f83603218ce 100644 --- a/atom/common/platform_util_mac.mm +++ b/atom/common/platform_util_mac.mm @@ -4,6 +4,9 @@ #include "atom/common/platform_util.h" +#include +#include + #import #import #import diff --git a/package.json b/package.json index 639b71c46e7b..d2ae14c30600 100644 --- a/package.json +++ b/package.json @@ -67,6 +67,7 @@ "lint:js": "node ./script/lint.js --js", "lint:clang-format": "python script/run-clang-format.py -r -c atom/ chromium_src/ || (echo \"\\nCode not formatted correctly.\" && exit 1)", "lint:cpp": "node ./script/lint.js --cc", + "lint:objc": "node ./script/lint.js --objc", "lint:py": "node ./script/lint.js --py", "lint:gn": "node ./script/lint.js --gn", "lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:docs-relative-links && npm run lint:check-trailing-whitespace", diff --git a/script/lint.js b/script/lint.js index 1a859dd8856b..d880abcfe2a1 100755 --- a/script/lint.js +++ b/script/lint.js @@ -41,6 +41,21 @@ function spawnAndCheckExitCode (cmd, args, opts) { if (status) process.exit(status) } +function cpplint (args) { + const result = childProcess.spawnSync('cpplint.py', args, { encoding: 'utf8' }) + // cpplint.py writes EVERYTHING to stderr, including status messages + if (result.stderr) { + for (const line of result.stderr.split(/[\r\n]+/)) { + if (line.length && !line.startsWith('Done processing ') && line !== 'Total errors found: 0') { + console.warn(line) + } + } + } + if (result.status) { + process.exit(result.status) + } +} + const LINTERS = [ { key: 'c++', roots: ['atom', 'native_mate'], @@ -51,18 +66,25 @@ const LINTERS = [ { } else { spawnAndCheckExitCode('python', ['script/run-clang-format.py', ...filenames]) } - const result = childProcess.spawnSync('cpplint.py', filenames, { encoding: 'utf8' }) - // cpplint.py writes EVERYTHING to stderr, including status messages - if (result.stderr) { - for (const line of result.stderr.split(/[\r\n]+/)) { - if (line.length && !line.startsWith('Done processing ') && line !== 'Total errors found: 0') { - console.warn(line) - } - } - } - if (result.status) { - process.exit(result.status) + cpplint(filenames) + } +}, { + key: 'objc', + roots: ['atom'], + test: filename => filename.endsWith('.mm'), + run: (opts, filenames) => { + if (opts.fix) { + spawnAndCheckExitCode('python', ['script/run-clang-format.py', '--fix', ...filenames]) + } else { + spawnAndCheckExitCode('python', ['script/run-clang-format.py', ...filenames]) } + const filter = [ + '-readability/casting', + '-whitespace/braces', + '-whitespace/indent', + '-whitespace/parens' + ] + cpplint(['--extensions=mm', `--filter=${filter.join(',')}`, ...filenames]) } }, { key: 'python', @@ -119,7 +141,7 @@ const LINTERS = [ { function parseCommandLine () { let help const opts = minimist(process.argv.slice(2), { - boolean: [ 'c++', 'javascript', 'python', 'gn', 'help', 'changed', 'fix', 'verbose', 'only' ], + boolean: [ 'c++', 'objc', 'javascript', 'python', 'gn', 'help', 'changed', 'fix', 'verbose', 'only' ], alias: { 'c++': ['cc', 'cpp', 'cxx'], javascript: ['js', 'es'], python: 'py', changed: 'c', help: 'h', verbose: 'v' }, unknown: arg => { help = true } })