realm / SwiftLint

A tool to enforce Swift style and conventions.
https://realm.github.io/SwiftLint
MIT License
18.7k stars 2.23k forks source link

Error: No lintable files found at paths: '' #5850

Open ryansalisbury opened 3 weeks ago

ryansalisbury commented 3 weeks ago

New Issue Checklist

Bug Description

I have followed the installation instructions from the github readMe, and when I run swiftlint form the terminal, it correctly outputs the field with linting warnings/errors in them. However, when I add the build script to the Build Phase as 'SwiftLint'm using the bash code found in the ReadME, I consistently get this error:

Linting Swift files in current working directory Error: No lintable files found at paths: '' Command PhaseScriptExecution failed with a nonzero exit code

Mention the command or other SwiftLint integration method that caused the issue. Include stack traces or command output.

Linting Swift files in current working directory
Error: No lintable files found at paths: ''
Command PhaseScriptExecution failed with a nonzero exit code

Environment


I do not have a yml file set-up for configurations since I am just installing swiftlint for the first time.```

Are you using [nested configurations](https://github.com/realm/SwiftLint#nested-configurations)? If so, paste their
relative paths and respective contents.
I am not using nested configurations - i am just starting a swift project for the first time and am surprised that Swift does not have a plugin like 'Prettier' for VSCode.
vdhamer commented 2 days ago

Changing the Build Settings > Build Options > User Script Sandboxing to "No" should fix it.

I am running Xcode 16.2 beta 3 (16C5023f) and SwiftLint 0.57.1 (installed as a final build step) and just ran into this in a fresh project with 100 or so lines of Swift. So it should also show up in Apple's own "hello world" file templates.

This issue is not new: https://github.com/realm/SwiftLint/issues/5053. But the triggered Xcode error messages have somehow changed over the past 1.5 years.

What’s apparently going on here is that SwiftLint needs to discover and read the source files for scanning. And - due to sandboxing restrictions - is not allowed to see or read those files. Sandboxing can be seen as a layer on top of the Unix access privileges and causes files that are clearly present (e.g. to ls -al) to be invisible to an app even when the access privileges are set to 777.