Script syntax checking

§
Posted:

Script syntax checking

New scripts are now checked for syntax errors and can't be posted if they contain any. This will eventually be applied to updates of existing scripts, then possibly deleting invalid scripts previously posted.

Let me know if see any problems with this.

§
Posted:
Edited:

This now applies to updates of existing scripts.

§
Posted:

The script syntax checker the site uses is backed by V8, and this means that syntax that may be valid in other contexts won't work. One example is E4X, specifically the use of CDATA blocks for string literals.

Any scripts using E4X features will need migrate off them going forward.

§
Posted:

Just curious how many scripts this affected.

This is a good way to clean out the old, obsolete scripts.

§
Posted:

This currently only happens on create/update. I have not yet run it on existing scripts to see how many are invalid.

§
Posted:

To answer your question, there are 976 (2%) that have syntax errors.

I had a CDATA block, transpiled to babel and eval'ed to allow me to write es6 with some syntax highlighting in most editors. replaced it with a template block, works fine.

Before: https://gitlab.com/gingersareawesome/the-verge-parental-control/blob/0c10904c99bb537684e40e257df6a0beca0d2039/the-verge-parental-control.user.js After: https://gitlab.com/gingersareawesome/the-verge-parental-control/blob/master/the-verge-parental-control.user.js

§
Posted:

I have a script that was flagged and I don't know why ??? https://greasyfork.org/en/scripts/14238/

Right now the script is obsolete but I will update it later since I maintain it in my freetime.

So don't delete it please, why just don't flag those script and put a warning so the users would know about the bad syntax ?? This way other users could fix it of fork it without having to rewrite a whole new userscripts or it ca be used to learn too.

Regards

§
Posted:

If there's a syntax error, likely the script is non-functional. Continuing to list it is a detriment to the site.

In the case of that particular script, it looks like there's an extra } near the end.

§
Posted:

All remaining scripts with syntax errors have been deleted. Authors are free to fix and revive them if they wish.

§
Posted:

Tried to upload a new script today, but was disallowed due to errors; There are no errors (red) in my script. Only multiple warnings (yellow). This script has been running in multiple browsers for months with no problems.

The problems I encountered are; 1) missing semicolons. This is redundant since the code cannot be minimized or written on a single line anyway. The purpose for javascript semicolons is to separate multiple statements or declarations on a single line.

2) let declarations are not permitted. What modern browser doesn't recognize let?

Now I went ahead and added semicolons, and switched let for var, but...

3) spread syntax causes a unrecoverable syntax warning message, The message was: expected '}' but found '...' instead on line xxx The line was like: var test = {...first, ...second} first and second are both objects and the spread operator '...' merges the two.

These are not script syntax errors, they are false errors from the syntax checking parser.

Please advise.

§
Posted:

Can you post a link to your script so I can check it?

§
Posted:

@JasonBarnabe Solved https://greasyfork.org/en/scripts/392374-seenchute

Jshint is working on an option for spread constructs for the next version.

In the meantime I used the ignore start - stop options thus: From: var cfg = {...{attributes:!1, childList:!1, characterData:!1, subtree:!1}, ...config };

To: var cfg = { // jshint ignore:start ...{attributes:!1, childList:!1, characterData:!1, subtree:!1}, ...config // jshint ignore:end };

This satisfies the jshint syntax check! Thanks

§
Posted:

I can't post my script, due to errors: 'Code contains errors: Uncaught SyntaxError: Unexpected token ? at undefined:69:69'. I check my code in my IDE, it satisifies my syntax checker. I guess that jshint not support the newest language standard, such as 'nullish coalescing operator'. How can I post my script which is using new syntax? Maybe you can use an other syntax checker to support it?

§
Posted:

There was a recent update to the libraries the site uses that adds support for this. It should be good as of right now.

§
Posted:

Thanks JasonBarnabe I can post my code right now.

Post reply

Sign in to post a reply.