goodcheck 2.5.1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +48 -2
- data/LICENSE +1 -1
- data/README.md +7 -444
- data/lib/goodcheck.rb +9 -4
- data/lib/goodcheck/analyzer.rb +13 -9
- data/lib/goodcheck/buffer.rb +11 -16
- data/lib/goodcheck/cli.rb +79 -57
- data/lib/goodcheck/commands/check.rb +41 -27
- data/lib/goodcheck/commands/config_loading.rb +28 -5
- data/lib/goodcheck/commands/init.rb +4 -2
- data/lib/goodcheck/commands/pattern.rb +2 -1
- data/lib/goodcheck/commands/test.rb +38 -30
- data/lib/goodcheck/config.rb +68 -1
- data/lib/goodcheck/config_loader.rb +41 -31
- data/lib/goodcheck/error.rb +3 -0
- data/lib/goodcheck/exit_status.rb +8 -0
- data/lib/goodcheck/glob.rb +14 -3
- data/lib/goodcheck/import_loader.rb +61 -17
- data/lib/goodcheck/issue.rb +3 -3
- data/lib/goodcheck/location.rb +28 -0
- data/lib/goodcheck/logger.rb +4 -4
- data/lib/goodcheck/reporters/json.rb +6 -1
- data/lib/goodcheck/reporters/text.rb +44 -11
- data/lib/goodcheck/rule.rb +3 -1
- data/lib/goodcheck/unarchiver.rb +40 -0
- data/lib/goodcheck/version.rb +1 -1
- metadata +47 -84
- data/.github/workflows/release.yml +0 -16
- data/.github/workflows/test.yml +0 -46
- data/.gitignore +0 -13
- data/.rubocop.yml +0 -5
- data/Dockerfile +0 -13
- data/Gemfile +0 -6
- data/Rakefile +0 -75
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/cheatsheet.pdf +0 -0
- data/docusaurus/.dockerignore +0 -2
- data/docusaurus/.gitignore +0 -12
- data/docusaurus/Dockerfile +0 -10
- data/docusaurus/docker-compose.yml +0 -18
- data/docusaurus/docs/commands.md +0 -69
- data/docusaurus/docs/configuration.md +0 -300
- data/docusaurus/docs/development.md +0 -15
- data/docusaurus/docs/getstarted.md +0 -46
- data/docusaurus/docs/rules.md +0 -79
- data/docusaurus/website/README.md +0 -193
- data/docusaurus/website/core/Footer.js +0 -100
- data/docusaurus/website/package.json +0 -14
- data/docusaurus/website/pages/en/index.js +0 -207
- data/docusaurus/website/pages/en/versions.js +0 -118
- data/docusaurus/website/sidebars.json +0 -11
- data/docusaurus/website/siteConfig.js +0 -171
- data/docusaurus/website/static/css/code-block-buttons.css +0 -39
- data/docusaurus/website/static/css/custom.css +0 -245
- data/docusaurus/website/static/img/favicon.ico +0 -0
- data/docusaurus/website/static/js/code-block-buttons.js +0 -47
- data/docusaurus/website/versioned_docs/version-1.0.0/commands.md +0 -70
- data/docusaurus/website/versioned_docs/version-1.0.0/configuration.md +0 -296
- data/docusaurus/website/versioned_docs/version-1.0.0/development.md +0 -16
- data/docusaurus/website/versioned_docs/version-1.0.0/getstarted.md +0 -47
- data/docusaurus/website/versioned_docs/version-1.0.0/rules.md +0 -81
- data/docusaurus/website/versioned_docs/version-1.0.2/rules.md +0 -79
- data/docusaurus/website/versioned_docs/version-2.4.0/configuration.md +0 -301
- data/docusaurus/website/versioned_docs/version-2.4.3/rules.md +0 -80
- data/docusaurus/website/versioned_sidebars/version-1.0.0-sidebars.json +0 -11
- data/docusaurus/website/versioned_sidebars/version-1.0.2-sidebars.json +0 -11
- data/docusaurus/website/versioned_sidebars/version-2.4.0-sidebars.json +0 -11
- data/docusaurus/website/versions.json +0 -11
- data/docusaurus/website/yarn.lock +0 -6806
- data/goodcheck.gemspec +0 -35
- data/goodcheck.yml +0 -10
- data/logo/GoodCheck Horizontal.pdf +0 -899
- data/logo/GoodCheck Horizontal.png +0 -0
- data/logo/GoodCheck Horizontal.svg +0 -55
- data/logo/GoodCheck logo.png +0 -0
- data/logo/GoodCheck vertical.png +0 -0
- data/sample.yml +0 -57
@@ -1,207 +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 Splash extends React.Component {
|
11
|
-
render() {
|
12
|
-
return (
|
13
|
-
<div className="feature-container">
|
14
|
-
<FeatureDescription
|
15
|
-
title={this.props.info.title}
|
16
|
-
description={this.props.info.description}
|
17
|
-
button={this.props.info.button}
|
18
|
-
/>
|
19
|
-
<FeatureCodeBoxExtended info={this.props.info} />
|
20
|
-
</div>
|
21
|
-
);
|
22
|
-
}
|
23
|
-
}
|
24
|
-
|
25
|
-
const Button = props => (
|
26
|
-
<div className="plugin-wrapper button-wrapper">
|
27
|
-
<a className="button" href={props.href} target={props.target}>
|
28
|
-
{props.children}
|
29
|
-
</a>
|
30
|
-
</div>
|
31
|
-
);
|
32
|
-
|
33
|
-
class Section extends React.Component {
|
34
|
-
render() {
|
35
|
-
|
36
|
-
return (
|
37
|
-
<div className="section-container">
|
38
|
-
<div className="section-grid">
|
39
|
-
<div className="section-card">
|
40
|
-
<div>
|
41
|
-
<h2>Configuration</h2>
|
42
|
-
<p>Learn the patterns and syntax to make custom rules. </p>
|
43
|
-
<Button href="./docs/configuration">Syntax details</Button>
|
44
|
-
</div>
|
45
|
-
</div>
|
46
|
-
<div className="section-card">
|
47
|
-
<div>
|
48
|
-
<h2>Rules</h2>
|
49
|
-
<p>
|
50
|
-
Want to see some pre-defined rules? Check out some rules here.
|
51
|
-
</p>
|
52
|
-
<Button href="./docs/rules">See rules</Button>
|
53
|
-
</div>
|
54
|
-
</div>
|
55
|
-
<div className="section-card">
|
56
|
-
<div>
|
57
|
-
<h2>Commands</h2>
|
58
|
-
<p>
|
59
|
-
Goodcheck is written to be used on the command line. Learn about
|
60
|
-
it’s usage here.
|
61
|
-
</p>
|
62
|
-
<Button href="./docs/commands">CLI details</Button>
|
63
|
-
</div>
|
64
|
-
</div>
|
65
|
-
</div>
|
66
|
-
</div>
|
67
|
-
);
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
class Feature extends React.Component {
|
72
|
-
render() {
|
73
|
-
return (
|
74
|
-
<div className="center-container">
|
75
|
-
<div className="feature-container">
|
76
|
-
<FeatureDescription
|
77
|
-
title={this.props.info.title}
|
78
|
-
description={this.props.info.description}
|
79
|
-
/>
|
80
|
-
<FeatureCodeBoxExtended info={this.props.info} />
|
81
|
-
</div>
|
82
|
-
</div>
|
83
|
-
);
|
84
|
-
}
|
85
|
-
}
|
86
|
-
|
87
|
-
class FeatureDescription extends React.Component {
|
88
|
-
render() {
|
89
|
-
return (
|
90
|
-
<div className="description-container">
|
91
|
-
<h1>{this.props.title}</h1>
|
92
|
-
<p>{this.props.description}</p>
|
93
|
-
{this.props.button && (
|
94
|
-
<Button href="./docs/getstarted">{this.props.button}</Button>
|
95
|
-
)}
|
96
|
-
</div>
|
97
|
-
);
|
98
|
-
}
|
99
|
-
}
|
100
|
-
|
101
|
-
class FeatureCodeBoxExtended extends React.Component {
|
102
|
-
render() {
|
103
|
-
const info = this.props.info;
|
104
|
-
return (
|
105
|
-
<div className="code-container">
|
106
|
-
<header className="code-top">goodcheck.yml</header>
|
107
|
-
<section className="code-content">
|
108
|
-
<pre className="yaml">
|
109
|
-
<span className="yaml-key">rules</span>
|
110
|
-
<span className="yaml-syntax">: </span>
|
111
|
-
<br />
|
112
|
-
<span className="yaml-syntax">{` - `}</span>
|
113
|
-
<span className="yaml-key">id</span>
|
114
|
-
<span className="yaml-syntax">: </span>
|
115
|
-
<span className="yaml-value">{info.id}</span>
|
116
|
-
<br />
|
117
|
-
{info.not && (
|
118
|
-
<div>
|
119
|
-
<span className="yaml-key">{` not`}</span>
|
120
|
-
<span className="yaml-syntax">: </span>
|
121
|
-
<br />
|
122
|
-
<span className="yaml-key">{` pattern`}</span>
|
123
|
-
<span className="yaml-syntax">: </span>
|
124
|
-
<span className="yaml-value">{info.pattern}</span>
|
125
|
-
<br />
|
126
|
-
</div>
|
127
|
-
)}
|
128
|
-
{!info.not && (
|
129
|
-
<div>
|
130
|
-
{info.pattern && (
|
131
|
-
<div>
|
132
|
-
<span className="yaml-key">{` pattern`}</span>
|
133
|
-
<span className="yaml-syntax">: </span>
|
134
|
-
<span className="yaml-value">{info.pattern}</span>
|
135
|
-
</div>
|
136
|
-
)}
|
137
|
-
</div>
|
138
|
-
)}
|
139
|
-
<span className="yaml-key">{` message`}</span>
|
140
|
-
<span className="yaml-syntax">: </span>
|
141
|
-
<span className="yaml-value">{`${info.message}`}</span>
|
142
|
-
<br />
|
143
|
-
{info.glob && (
|
144
|
-
<div>
|
145
|
-
<span className="yaml-key">{` glob`}</span>
|
146
|
-
<span className="yaml-syntax">: </span>
|
147
|
-
<span className="yaml-value">{`${info.glob}`}</span>
|
148
|
-
</div>
|
149
|
-
)}
|
150
|
-
</pre>
|
151
|
-
</section>
|
152
|
-
<header className="code-result">Result</header>
|
153
|
-
<section className="code-terminal">
|
154
|
-
<p className="yaml">
|
155
|
-
{`${info.resultFront}`}
|
156
|
-
{info.match && (
|
157
|
-
<span className="terminal-highlight"> {info.match} </span>
|
158
|
-
)}
|
159
|
-
{info.resultEnd && `${info.resultEnd}`}
|
160
|
-
</p>
|
161
|
-
</section>
|
162
|
-
</div>
|
163
|
-
);
|
164
|
-
}
|
165
|
-
}
|
166
|
-
|
167
|
-
class Index extends React.Component {
|
168
|
-
render() {
|
169
|
-
const { config: siteConfig } = this.props;
|
170
|
-
|
171
|
-
const Showcase = () => {
|
172
|
-
|
173
|
-
return (
|
174
|
-
<div className="productShowcaseSection paddingBottom showcaseBackground">
|
175
|
-
<br />
|
176
|
-
<h2>Stop reviewing the same patterns.</h2>
|
177
|
-
<Button href="./docs/getstarted">Start using {siteConfig.title}</Button>
|
178
|
-
</div>
|
179
|
-
);
|
180
|
-
};
|
181
|
-
|
182
|
-
const MainContainer = () => {
|
183
|
-
return (
|
184
|
-
<div className="index-container">
|
185
|
-
<div className="splash-container">
|
186
|
-
<Splash info={siteConfig.splash} />
|
187
|
-
</div>
|
188
|
-
<div className="three-features-container">
|
189
|
-
<Section />
|
190
|
-
<Feature info={siteConfig.featureOne} />
|
191
|
-
<Feature info={siteConfig.featureTwo} />
|
192
|
-
<Feature info={siteConfig.featureThree} />
|
193
|
-
</div>
|
194
|
-
</div>
|
195
|
-
);
|
196
|
-
}
|
197
|
-
|
198
|
-
return (
|
199
|
-
<div>
|
200
|
-
<MainContainer />
|
201
|
-
<Showcase />
|
202
|
-
</div>
|
203
|
-
);
|
204
|
-
}
|
205
|
-
}
|
206
|
-
|
207
|
-
module.exports = Index;
|
@@ -1,118 +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
|
-
const CompLibrary = require('../../core/CompLibrary');
|
11
|
-
|
12
|
-
const Container = CompLibrary.Container;
|
13
|
-
|
14
|
-
const CWD = process.cwd();
|
15
|
-
|
16
|
-
const versions = require(`${CWD}/versions.json`);
|
17
|
-
|
18
|
-
function Versions(props) {
|
19
|
-
const { config: siteConfig } = props;
|
20
|
-
const latestVersion = versions[0];
|
21
|
-
const repoUrl = `https://github.com/${siteConfig.organizationName}/${
|
22
|
-
siteConfig.projectName
|
23
|
-
}`;
|
24
|
-
return (
|
25
|
-
<div className="docMainWrapper wrapper">
|
26
|
-
<Container className="mainContainer versionsContainer">
|
27
|
-
<div className="post">
|
28
|
-
<header className="postHeader">
|
29
|
-
<h1>{siteConfig.title} Versions</h1>
|
30
|
-
</header>
|
31
|
-
<p>New versions of this project are released every so often.</p>
|
32
|
-
<h3 id="latest">Current version (Stable)</h3>
|
33
|
-
<table className="versions">
|
34
|
-
<tbody>
|
35
|
-
<tr>
|
36
|
-
<th>{latestVersion}</th>
|
37
|
-
<td>
|
38
|
-
{/* You are supposed to change this href where appropriate
|
39
|
-
Example: href="<baseUrl>/docs(/:language)/:id" */}
|
40
|
-
<a
|
41
|
-
href={`${siteConfig.baseUrl}${siteConfig.docsUrl}/${
|
42
|
-
props.language ? props.language + '/' : ''
|
43
|
-
}configuration`}>
|
44
|
-
Documentation
|
45
|
-
</a>
|
46
|
-
</td>
|
47
|
-
<td>
|
48
|
-
<a href="https://github.com/sider/goodcheck/releases">Release Notes</a>
|
49
|
-
</td>
|
50
|
-
</tr>
|
51
|
-
</tbody>
|
52
|
-
</table>
|
53
|
-
<p>
|
54
|
-
This is the version that is configured automatically when you first
|
55
|
-
install this project.
|
56
|
-
</p>
|
57
|
-
<h3 id="rc">Pre-release versions</h3>
|
58
|
-
<table className="versions">
|
59
|
-
<tbody>
|
60
|
-
<tr>
|
61
|
-
<th>master</th>
|
62
|
-
<td>
|
63
|
-
{/* You are supposed to change this href where appropriate
|
64
|
-
Example: href="<baseUrl>/docs(/:language)/next/:id" */}
|
65
|
-
<a
|
66
|
-
href={`${siteConfig.baseUrl}${siteConfig.docsUrl}/${
|
67
|
-
props.language ? props.language + '/' : ''
|
68
|
-
}next/configuration`}>
|
69
|
-
Documentation
|
70
|
-
</a>
|
71
|
-
</td>
|
72
|
-
<td>
|
73
|
-
<a href={repoUrl}>Source Code</a>
|
74
|
-
</td>
|
75
|
-
</tr>
|
76
|
-
</tbody>
|
77
|
-
</table>
|
78
|
-
<p>Other text describing this section.</p>
|
79
|
-
<h3 id="archive">Past Versions</h3>
|
80
|
-
<p>Here you can find previous versions of the documentation.</p>
|
81
|
-
<table className="versions">
|
82
|
-
<tbody>
|
83
|
-
{versions.map(
|
84
|
-
version =>
|
85
|
-
version !== latestVersion && (
|
86
|
-
<tr>
|
87
|
-
<th>{version}</th>
|
88
|
-
<td>
|
89
|
-
{/* You are supposed to change this href where appropriate
|
90
|
-
Example: href="<baseUrl>/docs(/:language)/:version/:id" */}
|
91
|
-
<a
|
92
|
-
href={`${siteConfig.baseUrl}${siteConfig.docsUrl}/${
|
93
|
-
props.language ? props.language + '/' : ''
|
94
|
-
}${version}/configuration`}>
|
95
|
-
Documentation
|
96
|
-
</a>
|
97
|
-
</td>
|
98
|
-
<td>
|
99
|
-
<a href={`${repoUrl}/releases/tag/v${version}`}>
|
100
|
-
Release Notes
|
101
|
-
</a>
|
102
|
-
</td>
|
103
|
-
</tr>
|
104
|
-
),
|
105
|
-
)}
|
106
|
-
</tbody>
|
107
|
-
</table>
|
108
|
-
<p>
|
109
|
-
You can find past versions of this project on{' '}
|
110
|
-
<a href={repoUrl}>GitHub</a>.
|
111
|
-
</p>
|
112
|
-
</div>
|
113
|
-
</Container>
|
114
|
-
</div>
|
115
|
-
);
|
116
|
-
}
|
117
|
-
|
118
|
-
module.exports = Versions;
|
@@ -1,171 +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
|
-
// See https://docusaurus.io/docs/site-config for all the possible
|
9
|
-
// site configuration options.
|
10
|
-
|
11
|
-
// List of projects/orgs using your project for the users page.
|
12
|
-
// const users = [
|
13
|
-
// {
|
14
|
-
// caption: 'User1',
|
15
|
-
// // You will need to prepend the image path with your baseUrl
|
16
|
-
// // if it is not '/', like: '/test-site/img/image.jpg'.
|
17
|
-
// image: 'https://github.com/sider/goodcheck/raw/master/logo/GoodCheck%20Horizontal.png',
|
18
|
-
// infoLink: 'https://github.com/sider/goodcheck',
|
19
|
-
// pinned: true,
|
20
|
-
// },
|
21
|
-
// ];
|
22
|
-
|
23
|
-
const siteConfig = {
|
24
|
-
title: 'Goodcheck', // Title for your website.
|
25
|
-
tagline: 'A regexp based customizable linter',
|
26
|
-
url: 'https://sider.github.io', // Your website URL
|
27
|
-
baseUrl: '/goodcheck/', // Base URL for your project */
|
28
|
-
// For github.io type URLs, you would set the url and baseUrl like:
|
29
|
-
// url: 'https://facebook.github.io',
|
30
|
-
// baseUrl: '/test-site/',
|
31
|
-
|
32
|
-
// Used for publishing and more
|
33
|
-
projectName: 'goodcheck',
|
34
|
-
organizationName: 'sider',
|
35
|
-
// For top-level user or org sites, the organization is still the same.
|
36
|
-
// e.g., for the https://JoelMarcey.github.io site, it would be set like...
|
37
|
-
// organizationName: 'JoelMarcey'
|
38
|
-
|
39
|
-
// For no header links in the top nav bar -> headerLinks: [],
|
40
|
-
headerLinks: [
|
41
|
-
{ doc: 'getstarted', label: 'Get Started' },
|
42
|
-
{ doc: 'configuration', label: 'Configuration' },
|
43
|
-
{ doc: 'rules', label: 'Rule' },
|
44
|
-
{ doc: 'commands', label: 'Commands' },
|
45
|
-
],
|
46
|
-
|
47
|
-
// If you have users set above, you add it here:
|
48
|
-
// users,
|
49
|
-
|
50
|
-
/* path to images for header/footer */
|
51
|
-
headerIcon: 'img/favicon.ico',
|
52
|
-
footerIcon: 'img/favicon.ico',
|
53
|
-
favicon: 'img/favicon.ico',
|
54
|
-
|
55
|
-
/* Colors for website */
|
56
|
-
colors: {
|
57
|
-
primaryColor: '#09345D', // hsl(209, 82%, 19%)
|
58
|
-
secondaryColor: '#044d82',
|
59
|
-
lightColor: '#eaeef3',
|
60
|
-
},
|
61
|
-
|
62
|
-
/* Custom fonts for website */
|
63
|
-
/*
|
64
|
-
fonts: {
|
65
|
-
myFont: [
|
66
|
-
"Times New Roman",
|
67
|
-
"Serif"
|
68
|
-
],
|
69
|
-
myOtherFont: [
|
70
|
-
"-apple-system",
|
71
|
-
"system-ui"
|
72
|
-
]
|
73
|
-
},
|
74
|
-
*/
|
75
|
-
|
76
|
-
// This copyright info is used in /core/Footer.js and blog RSS/Atom feeds.
|
77
|
-
copyright: `Copyright © ${new Date().getFullYear()} Goodcheck`,
|
78
|
-
|
79
|
-
highlight: {
|
80
|
-
// Highlight.js theme to use for syntax highlighting in code blocks.
|
81
|
-
theme: 'mono-blue',
|
82
|
-
},
|
83
|
-
|
84
|
-
// Add custom scripts here that would be placed in <script> tags.
|
85
|
-
scripts: [
|
86
|
-
'https://buttons.github.io/buttons.js',
|
87
|
-
'https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.0/clipboard.min.js',
|
88
|
-
'/js/code-block-buttons.js',
|
89
|
-
],
|
90
|
-
stylesheets: ['/css/code-block-buttons.css'],
|
91
|
-
|
92
|
-
// On page navigation for the current documentation page.
|
93
|
-
onPageNav: 'separate',
|
94
|
-
// No .html extensions for paths.
|
95
|
-
cleanUrl: true,
|
96
|
-
|
97
|
-
// Open Graph and Twitter card images.
|
98
|
-
// ogImage: 'img/undraw_online.svg',
|
99
|
-
// twitterImage: 'img/undraw_tweetstorm.svg',
|
100
|
-
|
101
|
-
// For sites with a sizable amount of content, set collapsible to true.
|
102
|
-
// Expand/collapse the links and subcategories under categories.
|
103
|
-
// docsSideNavCollapsible: true,
|
104
|
-
|
105
|
-
// Show documentation's last contributor's name.
|
106
|
-
// enableUpdateBy: true,
|
107
|
-
|
108
|
-
// Show documentation's last update time.
|
109
|
-
// enableUpdateTime: true,
|
110
|
-
|
111
|
-
// You may provide arbitrary config keys to be used as needed by your
|
112
|
-
// template. For example, if you need your repo's URL...
|
113
|
-
repoUrl: 'https://github.com/sider/goodcheck',
|
114
|
-
|
115
|
-
splash: {
|
116
|
-
title: `Goodcheck`,
|
117
|
-
description: "A regexp based customizable linter",
|
118
|
-
button: "Get Started",
|
119
|
-
id: "com.example.github",
|
120
|
-
pattern: "Github",
|
121
|
-
message: `|
|
122
|
-
GitHub is GitHub, not Github
|
123
|
-
|
124
|
-
You may have misspelling the name of the service!`,
|
125
|
-
resultFront: `index.html: 91: - <a>Signup via `,
|
126
|
-
match: "Github",
|
127
|
-
resultEnd: `</a>: GitHub is GitHub, not Github`
|
128
|
-
},
|
129
|
-
|
130
|
-
featureOne: {
|
131
|
-
title: `A Goodcheck rule`,
|
132
|
-
description:
|
133
|
-
"Define patterns with messages in a goodcheck.yml file and run goodcheck within your repository. Any matching results will be displayed in the terminal.",
|
134
|
-
id: "com.sample.no-blink",
|
135
|
-
pattern: "<blink",
|
136
|
-
message: `|
|
137
|
-
Stop using <blink> tag`,
|
138
|
-
|
139
|
-
resultFront: `index.html:50: <h3>`,
|
140
|
-
match: "<blink>",
|
141
|
-
resultEnd: `HTML5 Markup</blink></h3>: Stop using <blink> tag`
|
142
|
-
},
|
143
|
-
|
144
|
-
featureTwo: {
|
145
|
-
title: `A rule with negated pattern`,
|
146
|
-
description:
|
147
|
-
"Goodcheck rules are usually to detect if something is included in a file. You can define the negated rules for the opposite, something is missing in a file.",
|
148
|
-
id: "com.sample.negated",
|
149
|
-
not: true,
|
150
|
-
pattern: "<!DOCTYPE html>",
|
151
|
-
message: `|
|
152
|
-
Write a doctype on HTML files.`,
|
153
|
-
|
154
|
-
resultFront: `index.html:-:<html lang="en">: Write a doctype on HTML files.`,
|
155
|
-
glob: "**/*.html"
|
156
|
-
},
|
157
|
-
|
158
|
-
featureThree: {
|
159
|
-
title: `A rule without pattern`,
|
160
|
-
description:
|
161
|
-
"You can define a rule without pattern. The rule emits an issue on each file specified with glob. You cannot omit glob from a rule definition without pattern. ",
|
162
|
-
id: "com.sample.without_pattern",
|
163
|
-
message: `|
|
164
|
-
Read the operation manual for DB migration: https://example.com/guides/123 `,
|
165
|
-
|
166
|
-
resultFront: `db/schema.rb:-:# This file is auto-generated from the current state of the database. Instead: Read the operation manual for DB migration: https://example.com/guides/123`,
|
167
|
-
glob: "db/schema.rb"
|
168
|
-
},
|
169
|
-
};
|
170
|
-
|
171
|
-
module.exports = siteConfig;
|