-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
Tasks
Functionality
Diagnostics
- Insert two comments around the diagnositic spans
- Name the comments by the lint rules, and insert the rendered diagnostics into the second comment
- Insert rendered diagnostic messages into the second comment.
Configuration
- Add an option '--fix' to invoke flags related to all machine applicable fix rules from rust-clippy project
Measurement
- Measure the number of warnings per KLOC through
count_diagnostics.sh
- Count clippy fixes
Git History Extraction
- Select only the relevant marked rules
- Print out the hunks only when they are relevant to the spans of warning locations
- Output options
- Add an option
--patch <id>
to print out the patch of HEAD.. where is a commit id and HEAD is the current work tree - Add an option
--commit
to print out the hunks only when they have been fixed by the revision - Add an option
--pair
to generate diff records into code pairs - Add an option
--function
to generate diff records with the surrounding function contexts (which was a feature ofgit diff
but not supported bylibgit2
- Add an option
--single
to select only those diff records that patch exactly one warning - Add an option
--mixed
to save the messages into a file in case the information can be useful context - Add an option
--location
to markup the old_context with the warnings
- Add an option
Refactoring
- Integrate with transformation systems to fix some of the warnings not yet fixed by clippy
- Integrate with
txl
throughtxl-rs
- list the marked rules applied to the transformations
- Updated the TXL refactoring transformation and Rust grammar
- List the fixed warnings and keep the remaining warnings in the output
- Store the transformation results before and after
clippy --fix
into thetransform
folder - Call fix only when the number of warnings is larger than 0
- Perform
rustfmt
to output of TXL transformations
- Integrate with
- Infer return type of functions and map them to if-let test: Result => Ok(), Option => Some()
Usability
- Separate the output files into a different folder, so as to keep using the same ".rs" file extension
- Save the messages into
[$hash]/diagnostics.json
to avoid rerun the compilation for changes of the tool features
where $hash is the hash id of the current work copy of a git repository - Swap the order of diagnostic folder name from
$id/diagnostics
todiagnostics/$id
- Cache computed data by serialized/deserialize diff hunks
- Put header ahead of before and after contexts of the hunk pairs
- Print pair pragma with ## so it is easier to differentiate it with the pragma inside warning hints
Testing
- Test rust-diagnostics on its own history
- Generate test results in random folders so there is less interference between tests
- Fix the ordering of diagnostic hints so that the regression test will be repeatable
- Make the test cases parallelizable
Maintainability
- Move the implementation of optional functionalities into rustc_flags, fix features to reduce the dependencies
- Refactor the code to simplify the logic by introduce a Hunk structure as unified state of various analyses
- Removed the optional features
- Remove dependencies requiring nightly, now only depends on stable rust
- Use cargo-release and cargo-dist to create the new release
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation