goodcheck 2.5.2 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +49 -3
  3. data/LICENSE +1 -1
  4. data/README.md +8 -445
  5. data/lib/goodcheck.rb +9 -4
  6. data/lib/goodcheck/analyzer.rb +13 -9
  7. data/lib/goodcheck/buffer.rb +9 -21
  8. data/lib/goodcheck/cli.rb +79 -57
  9. data/lib/goodcheck/commands/check.rb +41 -27
  10. data/lib/goodcheck/commands/config_loading.rb +28 -5
  11. data/lib/goodcheck/commands/init.rb +4 -2
  12. data/lib/goodcheck/commands/pattern.rb +2 -1
  13. data/lib/goodcheck/commands/test.rb +38 -30
  14. data/lib/goodcheck/config.rb +68 -1
  15. data/lib/goodcheck/config_loader.rb +41 -31
  16. data/lib/goodcheck/error.rb +3 -0
  17. data/lib/goodcheck/exit_status.rb +8 -0
  18. data/lib/goodcheck/glob.rb +14 -3
  19. data/lib/goodcheck/import_loader.rb +96 -26
  20. data/lib/goodcheck/issue.rb +3 -3
  21. data/lib/goodcheck/location.rb +28 -0
  22. data/lib/goodcheck/logger.rb +4 -4
  23. data/lib/goodcheck/reporters/json.rb +6 -1
  24. data/lib/goodcheck/reporters/text.rb +44 -11
  25. data/lib/goodcheck/rule.rb +3 -1
  26. data/lib/goodcheck/unarchiver.rb +40 -0
  27. data/lib/goodcheck/version.rb +1 -1
  28. metadata +44 -82
  29. data/.github/dependabot.yml +0 -18
  30. data/.github/workflows/release.yml +0 -16
  31. data/.github/workflows/test.yml +0 -46
  32. data/.gitignore +0 -13
  33. data/.rubocop.yml +0 -5
  34. data/Dockerfile +0 -13
  35. data/Gemfile +0 -6
  36. data/Rakefile +0 -75
  37. data/bin/console +0 -14
  38. data/bin/setup +0 -8
  39. data/cheatsheet.pdf +0 -0
  40. data/docusaurus/.dockerignore +0 -2
  41. data/docusaurus/.gitignore +0 -12
  42. data/docusaurus/Dockerfile +0 -10
  43. data/docusaurus/docker-compose.yml +0 -18
  44. data/docusaurus/docs/commands.md +0 -69
  45. data/docusaurus/docs/configuration.md +0 -300
  46. data/docusaurus/docs/development.md +0 -15
  47. data/docusaurus/docs/getstarted.md +0 -46
  48. data/docusaurus/docs/rules.md +0 -79
  49. data/docusaurus/website/README.md +0 -193
  50. data/docusaurus/website/core/Footer.js +0 -100
  51. data/docusaurus/website/package.json +0 -14
  52. data/docusaurus/website/pages/en/index.js +0 -207
  53. data/docusaurus/website/pages/en/versions.js +0 -118
  54. data/docusaurus/website/sidebars.json +0 -11
  55. data/docusaurus/website/siteConfig.js +0 -171
  56. data/docusaurus/website/static/css/code-block-buttons.css +0 -39
  57. data/docusaurus/website/static/css/custom.css +0 -245
  58. data/docusaurus/website/static/img/favicon.ico +0 -0
  59. data/docusaurus/website/static/js/code-block-buttons.js +0 -47
  60. data/docusaurus/website/versioned_docs/version-1.0.0/commands.md +0 -70
  61. data/docusaurus/website/versioned_docs/version-1.0.0/configuration.md +0 -296
  62. data/docusaurus/website/versioned_docs/version-1.0.0/development.md +0 -16
  63. data/docusaurus/website/versioned_docs/version-1.0.0/getstarted.md +0 -47
  64. data/docusaurus/website/versioned_docs/version-1.0.0/rules.md +0 -81
  65. data/docusaurus/website/versioned_docs/version-1.0.2/rules.md +0 -79
  66. data/docusaurus/website/versioned_docs/version-2.4.0/configuration.md +0 -301
  67. data/docusaurus/website/versioned_docs/version-2.4.3/rules.md +0 -80
  68. data/docusaurus/website/versioned_sidebars/version-1.0.0-sidebars.json +0 -11
  69. data/docusaurus/website/versioned_sidebars/version-1.0.2-sidebars.json +0 -11
  70. data/docusaurus/website/versioned_sidebars/version-2.4.0-sidebars.json +0 -11
  71. data/docusaurus/website/versions.json +0 -12
  72. data/docusaurus/website/yarn.lock +0 -6604
  73. data/goodcheck.gemspec +0 -35
  74. data/goodcheck.yml +0 -10
  75. data/logo/GoodCheck Horizontal.pdf +0 -899
  76. data/logo/GoodCheck Horizontal.png +0 -0
  77. data/logo/GoodCheck Horizontal.svg +0 -55
  78. data/logo/GoodCheck logo.png +0 -0
  79. data/logo/GoodCheck vertical.png +0 -0
  80. data/sample.yml +0 -57
@@ -1,15 +0,0 @@
1
- ---
2
- id: development
3
- title: Development
4
- sidebar_label: Development
5
- ---
6
-
7
- ## Development
8
-
9
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
10
-
11
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
12
-
13
- ## Contributing
14
-
15
- Bug reports and pull requests are welcome on [GitHub](https://github.com/sider/goodcheck).
@@ -1,46 +0,0 @@
1
- ---
2
- id: getstarted
3
- title: Getting Started
4
- sidebar_label: Get Started
5
- ---
6
-
7
- ## Installation
8
-
9
- ```bash
10
- $ gem install goodcheck
11
- ```
12
-
13
- Or you can use `bundler`!
14
-
15
- If you would not like to install Goodcheck to system (e.g. you would not like to install Ruby 2.4 or higher), you can use a docker image. [See below](#docker-images).
16
-
17
- ## Docker Images
18
-
19
- We provide Docker images of Goodcheck so that you can try Goodcheck without installing them.
20
-
21
- - https://hub.docker.com/r/sider/goodcheck/
22
-
23
- ```bash
24
- $ docker pull sider/goodcheck
25
- $ docker run -t --rm -v "$(pwd):/work" sider/goodcheck check
26
- ```
27
-
28
- The default `latest` tag points to the latest release of Goodcheck.
29
- You can pick a version of Goodcheck from [tags page](https://hub.docker.com/r/sider/goodcheck/tags).
30
-
31
- ## Quickstart
32
-
33
- ```bash
34
- $ goodcheck init
35
- $ vim goodcheck.yml
36
- $ goodcheck check
37
- ```
38
-
39
- The `init` command generates a template of `goodcheck.yml` configuration file for you.
40
- Edit the config file to define patterns you want to check.
41
- Then run `check` command, and it will print matched texts.
42
-
43
-
44
-
45
-
46
-
@@ -1,79 +0,0 @@
1
- ---
2
- id: rules
3
- title: Rules
4
- sidebar_label: Rules
5
- ---
6
-
7
-
8
- ## Rule: `"_blank"` Security Issue
9
-
10
- When `target = "_blank"` is used, the opened page can access the original window object and potentially redirect the original page to a malicious URL. In this example, the rule will look for patterns of `"_blank"` and suggest to use `rel="noopener"` to prevent the opened page from having access.
11
-
12
- ```yaml
13
- rules:
14
- - id: security.link
15
- pattern:
16
- - token: 'target="_blank"'
17
- - token: 'target: "_blank"'
18
- message: |
19
- Specify rel="noopener" for security reasons.
20
-
21
- Opening new tab without rel="noopener" may cause a security issue.
22
- It allows modifying original tab URLs from opened tabs.
23
- justification:
24
- - When opening a URL in our service
25
- glob:
26
- - "**/*.html"
27
- - "**/*.html.erb"
28
- fail:
29
- - '<a href="https://github.com" target="_blank">GitHub</a>'
30
- pass:
31
- - '<a href="/signup">Signup</a>'
32
- ```
33
-
34
- ## Rule: Sign in
35
- > Warning: This rule needs customization.
36
-
37
- Keep wording consistent to provide a clear experience for users. In this example, the use of Log in or Log out would prompt the use of sign in / sign out instead.
38
-
39
- ```yaml
40
- rules:
41
- - id: wording.signin
42
- pattern:
43
- - token: Log in
44
- case_sensitive: false
45
- - token: Log out
46
- case_sensitive: false
47
- glob:
48
- - "**/*.html.erb"
49
- - "**/*.yml"
50
- message: |
51
- Please use “sign in”/“sign out”
52
-
53
- We use “sign in” instead of “log in” and “sign out” instead of “log out”.
54
- See the wording policy for details.
55
-
56
- https://docs.example.com/1840
57
- fail:
58
- - "Log in"
59
- - "Log out"
60
- pass:
61
- - "Sign in"
62
- - "Sign out"
63
- ```
64
-
65
- ## Rule: mixin
66
- > Warning: This rule needs customization.
67
-
68
- A mixin lets you make groups of CSS declarations that you want to reuse throughout your site. In this example, it creates a warning when the color pattern is used and suggests using a mixin instead.
69
-
70
- ```yaml
71
- rules:
72
- - id: use-mixin
73
- message: Use mixin.
74
- pattern: "color: #038cf4;"
75
- pass:
76
- - "@include some-mixin;"
77
- fail:
78
- - "color: #038cf4;"
79
- ```
@@ -1,193 +0,0 @@
1
- This website was created with [Docusaurus](https://docusaurus.io/).
2
-
3
- # What's In This Document
4
-
5
- * [Get Started in 5 Minutes](#get-started-in-5-minutes)
6
- * [Directory Structure](#directory-structure)
7
- * [Editing Content](#editing-content)
8
- * [Adding Content](#adding-content)
9
- * [Full Documentation](#full-documentation)
10
-
11
- # Get Started in 5 Minutes
12
-
13
- 1. Make sure all the dependencies for the website are installed:
14
-
15
- ```sh
16
- # Install dependencies
17
- $ yarn
18
- ```
19
- 2. Run your dev server:
20
-
21
- ```sh
22
- # Start the site
23
- $ yarn start
24
- ```
25
-
26
- ## Directory Structure
27
-
28
- Your project file structure should look something like this
29
-
30
- ```
31
- my-docusaurus/
32
- docs/
33
- doc-1.md
34
- doc-2.md
35
- doc-3.md
36
- website/
37
- blog/
38
- 2016-3-11-oldest-post.md
39
- 2017-10-24-newest-post.md
40
- core/
41
- node_modules/
42
- pages/
43
- static/
44
- css/
45
- img/
46
- package.json
47
- sidebar.json
48
- siteConfig.js
49
- ```
50
-
51
- # Editing Content
52
-
53
- ## Editing an existing docs page
54
-
55
- Edit docs by navigating to `docs/` and editing the corresponding document:
56
-
57
- `docs/doc-to-be-edited.md`
58
-
59
- ```markdown
60
- ---
61
- id: page-needs-edit
62
- title: This Doc Needs To Be Edited
63
- ---
64
-
65
- Edit me...
66
- ```
67
-
68
- For more information about docs, click [here](https://docusaurus.io/docs/en/navigation)
69
-
70
- ## Editing an existing blog post
71
-
72
- Edit blog posts by navigating to `website/blog` and editing the corresponding post:
73
-
74
- `website/blog/post-to-be-edited.md`
75
- ```markdown
76
- ---
77
- id: post-needs-edit
78
- title: This Blog Post Needs To Be Edited
79
- ---
80
-
81
- Edit me...
82
- ```
83
-
84
- For more information about blog posts, click [here](https://docusaurus.io/docs/en/adding-blog)
85
-
86
- # Adding Content
87
-
88
- ## Adding a new docs page to an existing sidebar
89
-
90
- 1. Create the doc as a new markdown file in `/docs`, example `docs/newly-created-doc.md`:
91
-
92
- ```md
93
- ---
94
- id: newly-created-doc
95
- title: This Doc Needs To Be Edited
96
- ---
97
-
98
- My new content here..
99
- ```
100
-
101
- 1. Refer to that doc's ID in an existing sidebar in `website/sidebar.json`:
102
-
103
- ```javascript
104
- // Add newly-created-doc to the Getting Started category of docs
105
- {
106
- "docs": {
107
- "Getting Started": [
108
- "quick-start",
109
- "newly-created-doc" // new doc here
110
- ],
111
- ...
112
- },
113
- ...
114
- }
115
- ```
116
-
117
- For more information about adding new docs, click [here](https://docusaurus.io/docs/en/navigation)
118
-
119
- ## Adding a new blog post
120
-
121
- 1. Make sure there is a header link to your blog in `website/siteConfig.js`:
122
-
123
- `website/siteConfig.js`
124
- ```javascript
125
- headerLinks: [
126
- ...
127
- { blog: true, label: 'Blog' },
128
- ...
129
- ]
130
- ```
131
-
132
- 2. Create the blog post with the format `YYYY-MM-DD-My-Blog-Post-Title.md` in `website/blog`:
133
-
134
- `website/blog/2018-05-21-New-Blog-Post.md`
135
-
136
- ```markdown
137
- ---
138
- author: Frank Li
139
- authorURL: https://twitter.com/foobarbaz
140
- authorFBID: 503283835
141
- title: New Blog Post
142
- ---
143
-
144
- Lorem Ipsum...
145
- ```
146
-
147
- For more information about blog posts, click [here](https://docusaurus.io/docs/en/adding-blog)
148
-
149
- ## Adding items to your site's top navigation bar
150
-
151
- 1. Add links to docs, custom pages or external links by editing the headerLinks field of `website/siteConfig.js`:
152
-
153
- `website/siteConfig.js`
154
- ```javascript
155
- {
156
- headerLinks: [
157
- ...
158
- /* you can add docs */
159
- { doc: 'my-examples', label: 'Examples' },
160
- /* you can add custom pages */
161
- { page: 'help', label: 'Help' },
162
- /* you can add external links */
163
- { href: 'https://github.com/facebook/Docusaurus', label: 'GitHub' },
164
- ...
165
- ],
166
- ...
167
- }
168
- ```
169
-
170
- For more information about the navigation bar, click [here](https://docusaurus.io/docs/en/navigation)
171
-
172
- ## Adding custom pages
173
-
174
- 1. Docusaurus uses React components to build pages. The components are saved as .js files in `website/pages/en`:
175
- 1. If you want your page to show up in your navigation header, you will need to update `website/siteConfig.js` to add to the `headerLinks` element:
176
-
177
- `website/siteConfig.js`
178
- ```javascript
179
- {
180
- headerLinks: [
181
- ...
182
- { page: 'my-new-custom-page', label: 'My New Custom Page' },
183
- ...
184
- ],
185
- ...
186
- }
187
- ```
188
-
189
- For more information about custom pages, click [here](https://docusaurus.io/docs/en/custom-pages).
190
-
191
- # Full Documentation
192
-
193
- Full documentation can be found on the [website](https://docusaurus.io/).
@@ -1,100 +0,0 @@
1
- /**
2
- * Copyright (c) 2017-present, Facebook, Inc.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- */
7
-
8
- const React = require('react');
9
-
10
- class Footer extends React.Component {
11
- docUrl(doc) {
12
- const baseUrl = this.props.config.baseUrl;
13
- const docsUrl = this.props.config.docsUrl;
14
- const docsPart = `${docsUrl ? `${docsUrl}/` : ''}`;
15
- return `${baseUrl}${docsPart}${doc}`;
16
- }
17
-
18
- pageUrl(doc, language) {
19
- const baseUrl = this.props.config.baseUrl;
20
- return baseUrl + (language ? `${language}/` : '') + doc;
21
- }
22
-
23
- render() {
24
- return (
25
- <footer className="nav-footer" id="footer">
26
- <section className="sitemap">
27
- <a href={this.props.config.baseUrl} className="nav-home">
28
- {this.props.config.footerIcon && (
29
- <img
30
- src={this.props.config.baseUrl + this.props.config.footerIcon}
31
- alt={this.props.config.title}
32
- width="40"
33
- height="39"
34
- />
35
- )}
36
- </a>
37
- <div>
38
- <h5>Docs</h5>
39
- <a href={this.docUrl('getstarted.html')}>
40
- Getting Started
41
- </a>
42
- <a href={this.docUrl('configuration.html')}>
43
- Configuration
44
- </a>
45
- <a href={this.docUrl('rules.html')}>
46
- Rules
47
- </a>
48
- <a href={this.docUrl('commands.html')}>
49
- Commands
50
- </a>
51
- <a href={this.docUrl('development.html')}>
52
- Development
53
- </a>
54
- </div>
55
- <div>
56
- <h5>More</h5>
57
- <a href="https://github.com/sider/goodcheck">GitHub</a>
58
- <a
59
- className="github-button"
60
- href={this.props.config.repoUrl}
61
- data-icon="octicon-star"
62
- data-count-href="/sider/goodcheck/stargazers"
63
- data-show-count="true"
64
- data-count-aria-label="# stargazers on GitHub"
65
- aria-label="Star this project on GitHub">
66
- Star
67
- </a>
68
- {this.props.config.twitterUsername && (
69
- <div className="social">
70
- <a
71
- href={`https://twitter.com/${
72
- this.props.config.twitterUsername
73
- }`}
74
- className="twitter-follow-button">
75
- Follow @{this.props.config.twitterUsername}
76
- </a>
77
- </div>
78
- )}
79
- {this.props.config.facebookAppId && (
80
- <div className="social">
81
- <div
82
- className="fb-like"
83
- data-href={this.props.config.url}
84
- data-colorscheme="dark"
85
- data-layout="standard"
86
- data-share="true"
87
- data-width="225"
88
- data-show-faces="false"
89
- />
90
- </div>
91
- )}
92
- </div>
93
- </section>
94
- <section className="copyright">{this.props.config.copyright}</section>
95
- </footer>
96
- );
97
- }
98
- }
99
-
100
- module.exports = Footer;
@@ -1,14 +0,0 @@
1
- {
2
- "scripts": {
3
- "examples": "docusaurus-examples",
4
- "start": "docusaurus-start",
5
- "build": "docusaurus-build",
6
- "publish-gh-pages": "docusaurus-publish",
7
- "write-translations": "docusaurus-write-translations",
8
- "version": "docusaurus-version",
9
- "rename-version": "docusaurus-rename-version"
10
- },
11
- "devDependencies": {
12
- "docusaurus": "^1.14.4"
13
- }
14
- }