Skip to content
Open
Show file tree
Hide file tree
Changes from 16 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ This repository now hosts [eslint-plugin-sonarjs](./packages/jsts/src/rules/READ
# Features

- Advanced rules based on pattern matching and control flow analysis
- [479 JS rules](https://rules.sonarsource.com/javascript) and [496 TS rules](https://rules.sonarsource.com/typescript)
- [29 CSS rules](https://rules.sonarsource.com/css)
- [480 JS rules](https://rules.sonarsource.com/javascript) and [497 TS rules](https://rules.sonarsource.com/typescript)
- [30 CSS rules](https://rules.sonarsource.com/css)
- Compatible with ECMAScript 2015-2020
- React JSX, Flow, Vue, and AWS lambda functions support for JavaScript and TypeScript
- CSS, SCSS, SASS, Less, also 'style' inside HTML and VueJS files
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import static org.assertj.core.api.Assertions.tuple;

import com.sonarsource.scanner.integrationtester.dsl.EngineVersion;
import com.sonarsource.scanner.integrationtester.dsl.Log;
import com.sonarsource.scanner.integrationtester.dsl.ScannerInput;
import com.sonarsource.scanner.integrationtester.dsl.ScannerResult;
import com.sonarsource.scanner.integrationtester.dsl.SonarProjectContext;
Expand Down Expand Up @@ -73,25 +72,19 @@ void test() {
}

void parsingErrorsNotExcluded(ScannerResult result) {
assertThat(
result
.logOutput()
.stream()
.anyMatch(
s ->
s
.message()
.matches(
"Failed to parse file file:\\S*file-with-parsing-error\\.css, line 1, Unclosed block.*"
) &&
s.level() == Log.Level.WARN
)
).isTrue();
assertThat(result.logOutput().stream()).noneSatisfy(s ->
assertThat(s.message()).matches(
"(?s).*WARN: Failed to parse file file:\\S*file-with-parsing-error-excluded\\.css.*"
)
);
var issues = result
.scannerOutputReader()
.getProject()
.getAllIssues()
.stream()
.filter(TextRangeIssue.class::isInstance)
.map(TextRangeIssue.class::cast)
.map(issue -> tuple(issue.ruleKey(), issue.componentPath()))
.toList();

assertThat(issues)
.contains(tuple("css:S2260", "src/file-with-parsing-error.css"))
.doesNotContain(tuple("css:S2260", "src/file-with-parsing-error-excluded.css"));
}

void checkIssues(ScannerResult result) {
Expand All @@ -112,6 +105,7 @@ void checkIssues(ScannerResult result) {
tuple("css:S4667", "src/empty1.css"),
tuple("css:S4667", "src/empty2.less"),
tuple("css:S4667", "src/empty3.scss"),
tuple("css:S2260", "src/file-with-parsing-error.css"),
tuple("css:S4667", "src/emptySass.vue"),
tuple("css:S1128", "src/file1.css"),
tuple("css:S1116", "src/file1.css"),
Expand Down
11 changes: 11 additions & 0 deletions its/ruling/src/test/expected/ace/css-S2260.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"ace:demo/kitchen-sink/docs/css.css": [
35
],
"ace:demo/kitchen-sink/docs/sass.sass": [
3
],
"ace:tool/templates/theme.css": [
49
]
}
5 changes: 5 additions & 0 deletions its/ruling/src/test/expected/angular.js/css-S2260.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"angular.js:docs/config/templates/examples/template.css": [
1
]
}
8 changes: 8 additions & 0 deletions its/ruling/src/test/expected/ant-design/css-S2260.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"ant-design:components/style/color/colorPalette.less": [
34
],
"ant-design:components/style/color/tinyColor.less": [
1082
]
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,13 @@
{
"bulma:docs/_includes/components/figure.html": [
1
],
"bulma:docs/_sass/callout.sass": [
0
],
"bulma:docs/bulma-dark.sass": [
1
],
"bulma:sass/components/navbar.sass": [
0
],
Expand Down
5 changes: 5 additions & 0 deletions its/ruling/src/test/expected/paper.js/css-S2260.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"paper.js:examples/SVG Import/Gradient.html": [
133
]
}
11 changes: 11 additions & 0 deletions its/ruling/src/test/expected/sizzle/css-S2260.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"sizzle:speed/selectors.css": [
2
],
"sizzle:speed/selectors.large.css": [
2
],
"sizzle:speed/selectors.small.css": [
2
]
}
242 changes: 242 additions & 0 deletions its/ruling/src/test/expected/vuetify/css-S2260.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,242 @@
{
"vuetify:packages/vuetify/src/components/VAlert/VAlert.sass": [
14
],
"vuetify:packages/vuetify/src/components/VAppBar/VAppBar.sass": [
8
],
"vuetify:packages/vuetify/src/components/VAutocomplete/VAutocomplete.sass": [
9
],
"vuetify:packages/vuetify/src/components/VAvatar/VAvatar.sass": [
15
],
"vuetify:packages/vuetify/src/components/VBadge/VBadge.sass": [
24
],
"vuetify:packages/vuetify/src/components/VBanner/VBanner.sass": [
21
],
"vuetify:packages/vuetify/src/components/VBottomNavigation/VBottomNavigation.sass": [
11
],
"vuetify:packages/vuetify/src/components/VBottomSheet/VBottomSheet.sass": [
0
],
"vuetify:packages/vuetify/src/components/VBreadcrumbs/VBreadcrumbs.sass": [
11
],
"vuetify:packages/vuetify/src/components/VBtn/VBtn.sass": [
26
],
"vuetify:packages/vuetify/src/components/VBtnGroup/VBtnGroup.sass": [
16
],
"vuetify:packages/vuetify/src/components/VCalendar/VCalendarCategory.sass": [
4
],
"vuetify:packages/vuetify/src/components/VCalendar/VCalendarDaily.sass": [
4
],
"vuetify:packages/vuetify/src/components/VCalendar/VCalendarWeekly.sass": [
4
],
"vuetify:packages/vuetify/src/components/VCalendar/mixins/calendar-with-events.sass": [
4
],
"vuetify:packages/vuetify/src/components/VCard/VCard.sass": [
17
],
"vuetify:packages/vuetify/src/components/VChip/VChip.sass": [
21
],
"vuetify:packages/vuetify/src/components/VColorPicker/VColorPicker.sass": [
10
],
"vuetify:packages/vuetify/src/components/VColorPicker/VColorPickerEdit.sass": [
15
],
"vuetify:packages/vuetify/src/components/VColorPicker/VColorPickerPreview.sass": [
8
],
"vuetify:packages/vuetify/src/components/VCombobox/VCombobox.sass": [
9
],
"vuetify:packages/vuetify/src/components/VDatePicker/VDatePickerHeader.sass": [
3
],
"vuetify:packages/vuetify/src/components/VDatePicker/VDatePickerTable.sass": [
3
],
"vuetify:packages/vuetify/src/components/VDialog/VDialog.sass": [
24
],
"vuetify:packages/vuetify/src/components/VDivider/VDivider.sass": [
12
],
"vuetify:packages/vuetify/src/components/VExpansionPanel/VExpansionPanel.sass": [
69
],
"vuetify:packages/vuetify/src/components/VField/VField.sass": [
45
],
"vuetify:packages/vuetify/src/components/VFileInput/VFileInput.sass": [
7
],
"vuetify:packages/vuetify/src/components/VFooter/VFooter.sass": [
12
],
"vuetify:packages/vuetify/src/components/VGrid/VGrid.sass": [
23
],
"vuetify:packages/vuetify/src/components/VGrid/_mixins.sass": [
6
],
"vuetify:packages/vuetify/src/components/VIcon/VIcon.sass": [
23
],
"vuetify:packages/vuetify/src/components/VImg/VImg.sass": [
18
],
"vuetify:packages/vuetify/src/components/VKbd/VKbd.sass": [
12
],
"vuetify:packages/vuetify/src/components/VLayout/VLayoutItem.sass": [
5
],
"vuetify:packages/vuetify/src/components/VList/VList.sass": [
10
],
"vuetify:packages/vuetify/src/components/VList/VListItem.sass": [
17
],
"vuetify:packages/vuetify/src/components/VMain/VMain.sass": [
19
],
"vuetify:packages/vuetify/src/components/VMenu/VMenu.sass": [
8
],
"vuetify:packages/vuetify/src/components/VNavigationDrawer/VNavigationDrawer.sass": [
18
],
"vuetify:packages/vuetify/src/components/VOtpInput/VOtpInput.sass": [
5
],
"vuetify:packages/vuetify/src/components/VOverflowBtn/VOverflowBtn.sass": [
4
],
"vuetify:packages/vuetify/src/components/VOverlay/VOverlay.sass": [
17
],
"vuetify:packages/vuetify/src/components/VPicker/VPicker.sass": [
4
],
"vuetify:packages/vuetify/src/components/VProgressCircular/VProgressCircular.sass": [
42
],
"vuetify:packages/vuetify/src/components/VProgressLinear/VProgressLinear.sass": [
110
],
"vuetify:packages/vuetify/src/components/VResponsive/VResponsive.sass": [
20
],
"vuetify:packages/vuetify/src/components/VSelect/VSelect.sass": [
9
],
"vuetify:packages/vuetify/src/components/VSelectionControl/VSelectionControl.sass": [
77
],
"vuetify:packages/vuetify/src/components/VSheet/VSheet.sass": [
7
],
"vuetify:packages/vuetify/src/components/VSkeletonLoader/VSkeletonLoader.sass": [
6
],
"vuetify:packages/vuetify/src/components/VSlideGroup/VSlideGroup.sass": [
30
],
"vuetify:packages/vuetify/src/components/VSlider/VSliderThumb.sass": [
38
],
"vuetify:packages/vuetify/src/components/VSlider/VSliderTrack.sass": [
44
],
"vuetify:packages/vuetify/src/components/VSnackbar/VSnackbar.sass": [
26
],
"vuetify:packages/vuetify/src/components/VStepper/VStepper.sass": [
3
],
"vuetify:packages/vuetify/src/components/VSwitch/VSwitch.sass": [
44
],
"vuetify:packages/vuetify/src/components/VSystemBar/VSystemBar.sass": [
20
],
"vuetify:packages/vuetify/src/components/VTable/VTable.sass": [
8
],
"vuetify:packages/vuetify/src/components/VTabs/VTabs.sass": [
48
],
"vuetify:packages/vuetify/src/components/VTextField/VTextField.sass": [
26
],
"vuetify:packages/vuetify/src/components/VTextarea/VTextarea.sass": [
49
],
"vuetify:packages/vuetify/src/components/VTimePicker/VTimePickerClock.sass": [
4
],
"vuetify:packages/vuetify/src/components/VTimeline/VTimeline.sass": [
101
],
"vuetify:packages/vuetify/src/components/VTimeline/_mixins.sass": [
17
],
"vuetify:packages/vuetify/src/components/VToolbar/VToolbar.sass": [
18
],
"vuetify:packages/vuetify/src/components/VTooltip/VTooltip.sass": [
20
],
"vuetify:packages/vuetify/src/components/VTreeview/VTreeview.sass": [
5
],
"vuetify:packages/vuetify/src/labs/VDataTable/VDataTable.sass": [
20
],
"vuetify:packages/vuetify/src/styles/elements/_blockquote.sass": [
4
],
"vuetify:packages/vuetify/src/styles/elements/_global.sass": [
4
],
"vuetify:packages/vuetify/src/styles/tools/_density.sass": [
6
],
"vuetify:packages/vuetify/src/styles/tools/_elevation.sass": [
5
],
"vuetify:packages/vuetify/src/styles/tools/_radius.sass": [
6
],
"vuetify:packages/vuetify/src/styles/tools/_sheet.sass": [
2
],
"vuetify:packages/vuetify/src/styles/tools/_states.sass": [
11
],
"vuetify:packages/vuetify/src/styles/tools/_utilities.sass": [
27
],
"vuetify:packages/vuetify/src/styles/utilities/_display.sass": [
3
],
"vuetify:packages/vuetify/src/styles/utilities/_index.sass": [
11
],
"vuetify:packages/vuetify/src/styles/utilities/_screenreaders.sass": [
4
]
}
5 changes: 0 additions & 5 deletions its/ruling/src/test/expected/vuetify/javascript-S2260.json

This file was deleted.

Loading
Loading