Commit Graph

342 Commits

Author SHA1 Message Date
Jeroen Engels
4117baf838 Rename NoUnused.CustomTypeConstructors temporarily 2020-03-12 17:05:36 +01:00
Jeroen Engels
ce1c059d4c NoUnused.CustomTypeConstructors: Transform into a project rule 2020-03-12 16:59:14 +01:00
Jeroen Engels
b2fd92f529 NoUnused.CustomTypeConstructors: Prepare looking at other modules 2020-03-12 16:50:03 +01:00
Jeroen Engels
ce4febc1ac Support phantom types in NoUnused.CustomTypeConstructors 2020-03-11 17:51:09 +01:00
Jeroen Engels
c67aa1321c WIP: Don't report custom type constructors used as phantom types 2020-03-09 22:42:16 +01:00
Jeroen Engels
e438da283d Copy over NoUnused.CustomTypeConstructors temporarily 2020-03-09 21:21:38 +01:00
Jeroen Engels
c141fdb1ae Rename module rule's phantom fields to canCollectProjectData 2020-03-08 00:54:18 +01:00
Jeroen Engels
0d33ab05e7 Improve the error message when Review.Test.runOnModules is given an empty list 2020-03-07 20:11:07 +01:00
Jeroen Engels
801fae798a Remove version from dependency data 2020-03-07 19:57:16 +01:00
Jeroen Engels
37981b65db Make Dependencies opaque 2020-03-07 18:38:39 +01:00
Jeroen Engels
ec326af739 Write NoDebugTodoOrToString rule 2020-03-07 16:09:35 +01:00
Jeroen Engels
8f1ec1dd3a Write NoDebugLog rule 2020-03-07 16:09:35 +01:00
Jeroen Engels
5cfd68fb6b Rename withModuleDependenciesVisitor to withDependenciesModuleVisitor 2020-03-02 22:53:37 +01:00
Jeroen Engels
c09c46e4eb Rename withProjectElmJsonVisitor to withElmJsonProjectVisitor 2020-03-02 22:52:31 +01:00
Jeroen Engels
8406c29fd3 Rename withModuleElmJsonVisitor to withElmJsonModuleVisitor 2020-03-02 22:51:25 +01:00
Jeroen Engels
0b0b6d1b85 Use "List nothing" instead of "List Error" where possible 2020-02-28 17:11:15 +01:00
Jeroen Engels
d7f645241d Continue documentation for project rules 2020-02-27 19:19:33 +01:00
Jeroen Engels
fbcc11d6a9 Simplify Scope by not having a setter and getter 2020-02-16 23:29:11 +01:00
Jeroen Engels
c2c53fdbe6 Rename Rule.FileKey to Rule.ModuleKey 2020-02-16 21:54:05 +01:00
Jeroen Engels
382a6c8604 Add NoInvalidLicense 2020-02-16 21:40:59 +01:00
Jeroen Engels
c652a24d48 Store more information about the project's dependencies 2020-02-16 21:40:59 +01:00
Jeroen Engels
a91d66ea60 Add Review.Test.expectErrorsForElmJson 2020-02-16 16:56:33 +01:00
Jeroen Engels
0f39773e75 Change how dependencies are stored, and add NoUnused.Dependencies rule 2020-02-16 16:56:33 +01:00
Jeroen Engels
6bfc9f0757 Remove unused elements in tests 2020-02-16 16:56:19 +01:00
Jeroen Engels
24723bf066 Make it possible to report errors in the elm.json file 2020-02-16 16:56:19 +01:00
Jeroen Engels
f28b7698d7 Give a nicer error message when under is passed empty 2020-02-11 18:47:28 +01:00
Jeroen Engels
b72326085b Give a nicer error message in tests when the location could not be found 2020-02-11 18:12:51 +01:00
Jeroen Engels
e00ab39cd7 Fail tests if there are unknown module names in the expected errors list for expectErrorsForModules 2020-02-11 17:46:06 +01:00
Jeroen Engels
ac0ec7fe34 Rename traversingImportedModulesFirst to withContextFromImportedModules 2020-02-10 23:18:09 +01:00
Jeroen Engels
89a3a3d1b4 Rename withDependenciesVisitor to withModuleDependenciesVisitor 2020-01-27 17:18:06 +01:00
Jeroen Engels
0cada05fe3 Rename withElmJsonVisitor to withModuleElmJsonVisitor 2020-01-27 17:18:06 +01:00
Jeroen Engels
66bf74baac Rename withFinalEvaluation to withFinalModuleEvaluation 2020-01-26 13:28:57 +01:00
Jeroen Engels
ca4515ed2e More "global" to "project" renaming 2020-01-26 13:25:09 +01:00
Jeroen Engels
35c6e53664 Rename fromModuleToGlobal -> fromModuleToProject and fromGlobalToModule -> fromProjectToModule 2020-01-26 13:19:46 +01:00
Jeroen Engels
d2f2ffa2cd Rename Multi/Single to Project/Module 2020-01-20 08:34:52 +01:00
Jeroen Engels
d397c57189 Remove withInitialContext and change the rule schema's phantom types 2020-01-20 08:34:52 +01:00
Jeroen Engels
a2a5831e0b Explain in which module we are getting an unexpected test result 2020-01-15 16:35:03 +01:00
Jeroen Engels
d7d49501e1 Replace "Never" phantom types by record types 2020-01-15 16:35:03 +01:00
Jeroen Engels
eee29d7963 NoUnusedExports: Do not report tests or ReviewConfig.config 2020-01-15 16:35:03 +01:00
Jeroen Engels
691a22e5a7 NoUnusedExports: Mark types used in type alias and custom type arguments as used 2020-01-15 16:35:03 +01:00
Jeroen Engels
b654daa301 Remove unused code and dependencies 2020-01-15 09:54:26 +01:00
Jeroen Engels
acd63f22dd NoUnusedExports: Report unused types 2020-01-14 12:50:07 +01:00
Jeroen Engels
511db00e29 NoUnusedExports: Do not report elements that are not defined 2020-01-14 09:50:13 +01:00
Jeroen Engels
251bca2c12 Use Scope in NoUnusedExports to know about the exports from other modules 2020-01-14 09:50:13 +01:00
Jeroen Engels
c21fbff07e NoUnusedExports: Don't report used functions or values 2020-01-14 09:50:13 +01:00
Jeroen Engels
56e766ad62 Register type constructors from visited modules in Scope 2020-01-14 09:50:13 +01:00
Jeroen Engels
061a950679 Register types from visited modules in Scope 2020-01-14 09:50:13 +01:00
Jeroen Engels
6ca138db11 Register exposes values only if they are exposed 2020-01-14 09:50:13 +01:00
Jeroen Engels
0362f5b3e3 Register values from visited modules in Scope 2020-01-14 09:50:13 +01:00
Jeroen Engels
25601e6b24 Rework Scope to work for multi file rules 2020-01-14 09:50:13 +01:00
Jeroen Engels
13d845db25 Copy Scope 2020-01-14 09:50:13 +01:00
Jeroen Engels
dbf56e1e65 Add NoUnusedExports rule 2020-01-14 09:50:13 +01:00
Jeroen Engels
c2ea2f8136 Rename runMulti* to runOnModules* 2020-01-05 19:35:41 +01:00
Jeroen Engels
3bd94e4127 Replace expectErrorsForFiles by expectErrorsForModules 2020-01-05 18:44:16 +01:00
Jeroen Engels
c388770501 Have the tests explain which source code failed to parse when there are multiple 2020-01-05 11:04:20 +01:00
Jeroen Engels
a674ee4763 Do not consider a package module used when it contains a main function 2020-01-04 18:34:12 +01:00
Jeroen Engels
c3759a182d Add missing tests for NoUnusedModules 2020-01-04 15:12:00 +01:00
Jeroen Engels
6b371bf569 Fail tests when there are duplicate module names 2020-01-04 14:21:28 +01:00
Jeroen Engels
7b786d9a2d Add error message when the number of lists of errors is unexpected 2020-01-04 12:40:11 +01:00
Jeroen Engels
8fa9ab49a1 Add functions to be able to test multi rules 2020-01-03 17:12:43 +01:00
Jeroen Engels
6c7d2580cd Set the correct VariableType for ports 2019-12-07 15:29:20 +01:00
Jeroen Engels
fe7b3da438 Make scope understand case..of expressions 2019-11-27 22:30:01 +01:00
Jeroen Engels
4ad1d33d41 Make scope understand parameters 2019-11-27 00:17:14 +01:00
Jeroen Engels
581b77fd17 Make Scope understand exposing(Foo(..)) 2019-11-24 20:29:05 +01:00
Jeroen Engels
45861e3de7 Rename setter and getter fields for scope 2019-11-24 20:28:41 +01:00
Jeroen Engels
b8b6c6758c Make scope understand the elm/core prelude 2019-11-24 20:28:41 +01:00
Jeroen Engels
f6b5b0c4c3 Add tests for Scope 2019-11-24 20:28:41 +01:00
Jeroen Engels
a7c4b86a12 Push a new scope when entering a let..in block 2019-11-23 20:22:42 +01:00
Jeroen Engels
688eb3a1d1 Add test to make sure visitors are called in the expected order 2019-11-23 20:22:42 +01:00
Jeroen Engels
97d45987bd Call multiple declaration and expression visitors in reverse order on exit 2019-11-23 20:22:42 +01:00
Jeroen Engels
28e9dfc401 Make scope register top level variables 2019-11-22 00:00:13 +01:00
Jeroen Engels
0a9a4d8853 Make Scope understand exposing (..) 2019-11-20 11:16:37 +01:00
Jeroen Engels
75bb616686 Make Scope understand the exposing part when importing a module 2019-11-20 09:48:57 +01:00
Jeroen Engels
fad39c1397 Start working on a scope module
This module should help to write rules that detect the use of a given
function.
2019-11-20 09:48:57 +01:00
Jeroen Engels
5977bb06f2 Remove the Review.Util module 2019-09-29 10:51:29 +02:00
Jeroen Engels
8e48d01e66 Change the project's API from Lint* to Review* 2019-09-28 23:47:02 +02:00
Jeroen Engels
3645acb99e Reword the error message in the case of a missing fixes test failure 2019-09-17 19:56:15 +02:00
Jeroen Engels
b359fb3023 Add Lint.Rule.withDeclarationListVisitor function 2019-09-15 01:29:26 +02:00
Jeroen Engels
bf1f1d2380 Fix "across" typo accross the whole project 2019-08-29 22:45:28 +02:00
Jeroen Engels
011a205b13 Remove rules from the package 2019-08-28 08:36:24 +02:00
Jeroen Engels
ddaea22eab Move range manipulations fns out of Lint.Fix and into the rule that uses them 2019-08-22 19:48:46 +02:00
Jeroen Engels
5433526b2f Explain why we require providing the fix result in test error messages 2019-08-22 11:57:14 +02:00
Jeroen Engels
2c38878a6d Autofix all unused variables in NoUnusedVariables 2019-08-19 16:13:45 +02:00
Jeroen Engels
8fa510458e Fail applying a fix if ranges of the fixes overlap 2019-08-18 23:32:30 +02:00
Jeroen Engels
50f631c47c Add commented out tests for rangeUpUntil 2019-08-09 19:16:23 +02:00
Jeroen Engels
55fb6b71bb Improve NoUnusedVariables handles deleting the last declaration in a let in 2019-08-09 19:07:06 +02:00
Jeroen Engels
3b93133ada Fail applying a fix if the result becomes unparsable 2019-08-08 22:01:44 +02:00
Jeroen Engels
b7bbaff013 Fail the test with a helpful error message when fix does not change anything 2019-08-08 22:01:44 +02:00
Jeroen Engels
919467fee6 Add a way to check in tests that the fixed code is correct 2019-08-06 09:31:57 +02:00
Jeroen Engels
4eb024ef2e Make Lint.Fix.fix return a value that shows whether it was successful 2019-08-06 09:31:57 +02:00
Jeroen Engels
9e6160f8a6 Add ability to fix something on multiple lines 2019-08-06 09:31:57 +02:00
Jeroen Engels
76f0a8aaf2 Add tests for applying multiple fixes on a file 2019-08-06 09:31:57 +02:00
Jeroen Engels
330b1a1a7b Add tests for applying fixes on a single line 2019-08-06 09:31:57 +02:00
Jeroen Engels
d20396773e Move mergeRanges to Lint.Fix
Also add tests and documentation
2019-08-04 11:43:08 +02:00
Jeroen Engels
00215346ca Fix a bunch of typos about "it's" 2019-07-28 17:37:21 +02:00
Jeroen Engels
061fca8274 Check that the details are correct 2019-07-28 10:27:46 +02:00
Jeroen Engels
e27ea65b1a Add details in tests 2019-07-28 10:27:46 +02:00
Jeroen Engels
d593bae052 Add details to the message of every rule
This will make it easier to have helpful explanations and suggestions
like the Elm compiler does
2019-07-28 10:27:46 +02:00
Jeroen Engels
18a8514073 Show an example with Debug.todo rather than Debug.crash in NoDebug
Debug.crash has been removed in 0.19, and replaced by Debug.todo
2019-07-28 10:27:46 +02:00
Jeroen Engels
1cec4abc7f Rename module name in tests cases
Since the module name and the type were often the same, this should help 
remove some potential confusion
2019-07-25 11:16:54 +02:00
Jeroen Engels
45a10ebb3a Report unused import aliases that are named like a type 2019-07-25 10:40:23 +02:00
Jeroen Engels
527ee1c43a Report unused import aliases 2019-07-25 09:14:33 +02:00
Jeroen Engels
78562d1de5 Detect used types in pattern matching patterns 2019-07-25 00:19:43 +02:00
Jeroen Engels
2800e084e9 Organize the NoUnusedVariable rule tests 2019-07-24 18:58:56 +02:00
Jeroen Engels
7dc2094ff8 Reword the error message for the NoDebug rule 2019-07-23 00:16:02 +02:00
Jeroen Engels
6486148d25 Run missing locationIsAmbiguousInSourceCode test 2019-07-13 10:09:08 +02:00
Jeroen Engels
b829ab4f63 Lint.Test: Make error messgae formatting more consistent 2019-07-13 10:03:59 +02:00
Jeroen Engels
685e7dd6e1 Simplify the language used in Test error messages 2019-07-13 10:03:59 +02:00
Jeroen Engels
996c3039d6 Limit all Lint.Test error messages to 76 characters
This is so that they fit nicely in the terminal. The limit is usually 80
characters, but elm-test prepends every line by 4 spaces.
2019-07-13 10:03:58 +02:00
Jeroen Engels
905a74f901 Lint.Test: Add an identifiable name to errors to quickly be able to know what the problem is 2019-07-13 10:03:32 +02:00
Jeroen Engels
b6464dbff2 Move error messages out of Lint.Test and into Lint.Test.ErrorMessage 2019-07-11 08:47:33 +02:00
Jeroen Engels
1d3333f489 Add tests for the Test error messages 2019-07-11 08:47:33 +02:00
Jeroen Engels
6f26e13714 Remove rule DefaultPatternPosition
The compiler now forbids redundant patterns 👍
2019-07-08 22:23:27 +02:00
Jeroen Engels
2627b176df NoDebug: Forbid the import of the Debug module 2019-07-05 01:56:49 +02:00
Jeroen Engels
d576423905 NoDebug: Do not report when doing something like SomeModel.Debug.log 2019-07-05 01:56:49 +02:00
Jeroen Engels
3f6cc7c3e7 Add rule NoUnusedTypeConstructors 2019-07-05 01:21:30 +02:00
Jeroen Engels
fd6d142265 NoUnusedVariables: Do not report custom types for which a constructor was used 2019-07-05 00:33:51 +02:00
Jeroen Engels
396aa96c1f Remove comment about reporting unused pattern matching variables. This should be a new rule or option 2019-07-03 14:22:05 +02:00
Jeroen Engels
b236f10b5f Sort errors by position in the source code 2019-07-03 14:22:05 +02:00
Jeroen Engels
74c3c21bea NoUnusedVariables: Do not report types used in type signatures in a let in declaration 2019-07-02 11:55:49 +02:00
Jeroen Engels
c9a2a8e565 NoUnusedVariables: Do not report types used as arguments in custom types, or in type aliases 2019-07-02 11:42:07 +02:00
Jeroen Engels
b1b2a31e48 NoUnusedVariables: Do not report variables modified in a record update expression 2019-07-02 11:16:03 +02:00
Jeroen Engels
003336a735 Replace Lint.Test by the it's new version 2019-07-02 00:08:10 +02:00
Jeroen Engels
bf5a7dad8b Use new test module and improved the range for DefaultPatternPosition 2019-07-02 00:05:10 +02:00
Jeroen Engels
40cd398e35 Improve the range for NoExtraBooleanComparison 2019-07-02 00:05:10 +02:00
Jeroen Engels
e96b6610b2 Use new test module for NoExtraBooleanComparison 2019-07-02 00:05:10 +02:00
Jeroen Engels
75931b0f23 Use new test module for NoUnusedVariables 2019-07-02 00:05:10 +02:00
Jeroen Engels
8ffb30c450 Use new test module for NoDebug 2019-07-02 00:05:10 +02:00
Jeroen Engels
98d88e691e Use new test module for NoImportingEverything 2019-07-02 00:05:10 +02:00
Jeroen Engels
75e80d0926 Rewrite the Lint.Test module to have a nicer API and much better error messages 2019-07-02 00:05:10 +02:00
Jeroen Engels
9473c123bb Rename Lint.Test's "ruleTester" to "run" 2019-06-28 00:03:07 +02:00
Jeroen Engels
c3ceccc3dd Move Error to Lint.Rule 2019-06-28 00:03:07 +02:00
Jeroen Engels
5d465d8e95 Move TestUtil to Lint.Test and expose it in the package 2019-06-28 00:03:07 +02:00
Jeroen Engels
fbbb70749b Move LintResult from Lint.Error to TestUtil 2019-06-26 11:51:48 +02:00
Jeroen Engels
d23ba4a0a5 Move Rule definition to Lint.Rule 2019-06-25 23:51:43 +02:00
Jeroen Engels
692ebf2406 Simplify DefaultPatternPosition's configuration 2019-06-25 23:51:43 +02:00
Jeroen Engels
9923ec0368 Use new Rule API in existing rules 2019-06-24 00:52:23 +02:00
Jeroen Engels
76f63ff1f6 Refactor: Move LintResult to Lint.Error 2019-06-24 00:49:58 +02:00
Jeroen Engels
bf8c6a4b76 Add rule NoExtraBooleanComparison 2019-06-24 00:49:58 +02:00
Jeroen Engels
79885adde6 Add utilities to test rules 2019-06-24 00:49:58 +02:00
Jeroen Engels
3162a8bb68 Remove the need to specify error names when creating an error 2019-06-24 00:49:58 +02:00
Jeroen Engels
ede98bc179 Re-add DefaultPatternPosition 2019-06-08 23:12:55 +02:00
Jeroen Engels
21411aaf8c Re-add NoImportingEverything 2019-06-03 00:30:24 +02:00
Jeroen Engels
f6683e204d Improve tests 2019-06-02 23:06:08 +02:00
Jeroen Engels
95f4989fa9 Naming 2019-06-02 23:06:08 +02:00
Jeroen Engels
d204c21772 Handle ports 2019-06-02 23:06:08 +02:00
Jeroen Engels
7689d01304 Naming 2019-06-02 23:06:08 +02:00
Jeroen Engels
245b22455d import 2019-06-02 23:06:08 +02:00
Jeroen Engels
d656046936 report imports 2019-06-02 23:06:08 +02:00
Jeroen Engels
e28bd30490 nounused 2019-06-02 23:06:08 +02:00
Jeroen Engels
06d6e5f247 Add NoUnusedVariables rule 2019-06-02 23:06:08 +02:00
Jeroen Engels
d93474a62e Stop exposing parseSouce 2018-11-11 16:11:45 +01:00
Jeroen Engels
5236dea4d7 Module renaming 2018-11-11 00:10:35 +01:00
Jeroen Engels
c559bd94b8 Modules reordering 2018-11-10 23:38:12 +01:00
Jeroen Engels
f911819796 Fix tests 2018-11-06 18:46:46 +01:00
Jeroen Engels
a633af02b2 Remove tests for removed rules 2018-11-05 15:41:12 +01:00
Jeroen Engels
9e6b1e52c4 Apply elm-upgrade to tests/ 2018-11-05 15:40:41 +01:00
Jeroen Engels
1477fe856d Dogfeeding: cleaning up 2017-06-18 20:58:08 +02:00
Jeroen Engels
11b37494a9 Add rule ElmTest.NoDuplicateTestBodies 2017-06-18 20:58:08 +02:00
Jeroen Engels
aab4379e78 Add ability to specify exceptions in NoImporting 2017-06-18 16:52:52 +02:00
Jeroen Engels
0503e66803 Make NoExposingEverything handle module with a dotted name 2017-06-18 14:33:04 +02:00
Jeroen Engels
60b7ee4710 Make NoUnusedVariables handle port module declarations 2017-06-18 14:25:43 +02:00
Jeroen Engels
6ee43b9d84 Make NoExposingEverything handle port module declarations 2017-06-18 14:16:41 +02:00
Jeroen Engels
f663aad6fc Re-enable disabled test 2017-06-18 14:06:36 +02:00
Jeroen Engels
8eb386695a Update to elm-test v4 2017-06-18 14:00:48 +02:00
Jeroen Engels
28626576b5 Update tests to work with type updates 2017-06-18 13:49:31 +02:00
Jeroen Engels
fe10615afc Rename Error to LintError 2017-06-15 15:00:14 +02:00
Jeroen Engels
2e37e86ee8 Update tests to account for signature change 2017-06-13 01:31:10 +02:00
Jeroen Engels
c4974111fb Failure to parse now returns an error 2017-06-13 01:31:10 +02:00
Jeroen Engels
5eee6e50e1 Add SimplifyPropertyAccess rule 2017-06-11 19:43:02 +02:00
Jeroen Engels
97777a6563 NoUnusedVariables: handle function declarations in let statements 2017-06-11 18:01:42 +02:00
Jeroen Engels
e2c2c0e7e6 Make project compile again 2017-06-10 15:57:25 +02:00
Jeroen Engels
bf504a69ce Bump elm-ast to v8.0.3 2017-06-10 15:57:13 +02:00
Jeroen Engels
0710792368 Add documentation 2017-01-29 21:35:00 +01:00
Jeroen Engels
fc93fad157 Reorganize project file structure 2017-01-29 20:03:31 +01:00
Jeroen Engels
c371244a4c NoUnusedVariables: Report unused imported variables 2017-01-28 16:11:52 +01:00
Jeroen Engels
da3f260ece Add NoNestedLet rule 2017-01-24 23:33:16 +01:00
Jeroen Engels
1e6129cdd1 Add more tests for NoUselessPatternMatchingTest 2017-01-23 20:10:04 +01:00
Jeroen Engels
a9b17d8bfa Add NoUselessIf rule 2017-01-23 20:09:37 +01:00
Jeroen Engels
2b3a3e5a88 Add DefaultPatternPosition rule 2017-01-22 23:50:00 +01:00
Jeroen Engels
fb59dfc294 Add NoWarningComments rule 2017-01-22 23:09:54 +01:00
Jeroen Engels
4fc47e93e6 Add NoUselessPatternMatching rule 2017-01-22 13:08:15 +01:00
Jeroen Engels
9dd2456bb0 Add NoConstantCondition rule 2017-01-21 15:40:06 +01:00
Jeroen Engels
65ed24f942 Add SimplifyPiping rule 2017-01-21 01:25:38 +01:00
Jeroen Engels
c7de6956be Fix NoDuplicateImports bug when importing submodules 2017-01-19 22:30:50 +01:00
Jeroen Engels
a793e30c56 Add NoImportingEverything rule 2017-01-19 22:27:11 +01:00
Jeroen Engels
9c13d065e1 Add NoDuplicateImports rule 2017-01-19 21:02:21 +01:00
Jeroen Engels
e2cf51dbcf Add NoUnusedVariables rule 2017-01-16 23:34:05 +01:00
Jeroen Engels
33ba0246f0 Tests styling 2017-01-16 21:40:22 +01:00
Jeroen Engels
72ab86cde6 Add tests for NoDebug and visit all expression types 2017-01-16 00:51:31 +01:00
Jeroen Engels
0db86da1aa Rename FindNoAnnotatedFunction to NoUnannotatedFunction 2017-01-16 00:18:17 +01:00
Jeroen Engels
f33f613c14 Add Tests 2017-01-16 00:07:04 +01:00