2015-07-23 17 views
20

Tôi đang sử dụng StyleCop phiên bản: 4.7.49.0suy chuỗi C# 6.0 và StyleCop

Có ai sử dụng các chức năng chuỗi Nội suy mới nhất trong C# 6.0

dụ

var totalUnits = GetUnitsGetTotalIssuedShares(myId); 
var testString = $"Test Units :{totalUnits}, have been shipped."; 

Khi tôi xây dựng tôi nhận được lỗi stylecop SA0102 - bởi vì stylecop không thể phân tích cú pháp tệp. Nó không có vẻ như có một phiên bản mới của stylecop có thể xử lý 6,0 chưa?

lỗi: SA0102: Một lỗi cú pháp đã được phát hiện trong tập tin

Liệu có cách nào khắc phục điều này?

+0

Stylecop không phải là một phần của Visual Studio và phiên bản mới nhất là 1 tuổi.Bạn sẽ phải nâng cấp nó lên một phiên bản mới hơn, khi nó trở thành có sẵn –

+0

Chỉ cần tự hỏi nếu có một cách để ngăn chặn này SA0102 – MicroMan

+3

Hãy thử thực hiện dựa trên Roslyn các quy tắc StyleCop: https://github.com/DotNetAnalyzers/StyleCopAnalyzers –

Trả lời

10

SA0102 là internal stylecop error vì vậy không thể bị chặn hoặc bỏ qua thông qua tệp cài đặt.

Bạn có thể ngăn chặn một tập tin từ StyleCop bằng cách tìm các tên tập tin và thay đổi phần này trong csproj:

<Compile Include="<filename>.cs"> 
    <ExcludeFromStyleCop>True</ExcludeFromStyleCop> 
</Compile> 

Bạn có thể nhận được tác dụng tương tự bằng cách nhấp chuột phải vào tập tin vi phạm và chọn "loại trừ từ phong cách cảnh sát "nếu bạn đã cài đặt plugin StyleCop. Hôm nay cần phải được 4.7.50 alpha cho Visual Studio 2015.


Cách hiện đại hơn để làm điều này là để tận dụng các tính năng phân tích của Visual Studio 2015, với StyleCop.Analyzers.

enter image description here

Di chuyển đến Stylecop.Analyzers, điều này sẽ thêm chúng vào các quy tắc trong tập tin * .ruleset liên quan (cùng diễn ra như quy tắc CodeAnalysis)

enter image description here

và bạn có thể chạy chúng qua

enter image description here

nào có cùng có hiệu lực khi nhấp chuột phải Chạy StyleCop:

I.e. hiến:

enter image description here

này sẽ có hỗ trợ tốt hơn cho C# 6, như StyleCop 4.7.50, mà Hỗ trợ Visual Studio 2015, là alpha và chưa hỗ trợ C# 6.

+1

Tôi không chắc đây là giải pháp tuyệt vời để vô hiệu hóa phân tích kiểu cho mỗi tệp sử dụng tính năng 6.0. Thật không may phiên bản này của StylCop (phiên bản cuối cùng) chỉ là không tương thích với C# 6.0, vì vậy bạn phải tắt nó đi hoặc hy vọng ai đó có thể cập nhật và phân phối bản vá. – ChrisCW

+1

Um ... xin lỗi? Có lẽ [phong cách dự án cảnh sát] (http://stylecop.codeplex.com/) sẽ là một lỗ thông hơi tốt hơn cho sự thất vọng của bạn hơn tôi. – NikolaiDante

+4

Bỏ qua tệp để chặn cảnh báo? điều đó không tốt! – DAG

1

StyleCop nên khả năng xử lý C# 6 bây giờ:

Changes Beta 4.7.51: Added ban đầu (và chưa được kiểm tra) hỗ trợ cho C# 6.0 cú pháp

vì vậy, với ổn định build 4.7.54 hay muộn bạn không nên gặp này nữa: http://stylecop.codeplex.com/releases/view/621306

+4

Không, có vẻ như không, tôi chỉ nâng cấp lên 4.7.54 và tôi vẫn có cùng một vấn đề. :(Tuy nhiên, chỉ khi tôi sử dụng nội suy phức tạp $ @ string.Đáng chú ý nhất: Khi bạn chứa các biểu thức có dấu ngoặc đơn trong ngoặc đơn, không phải là biến số – Efrain

+0

Dường như họ bỏ qua một số trường hợp cạnh. họ biết (http://stylecop.codeplex.com/workitem/list/basic) – Hinek

+0

Tôi có 4.7.58.3 và vẫn gặp vấn đề với nội suy chuỗi + chữ, ví dụ, 'string x = $ @" {var1} là không phải là số, {var2} là ";' – ps2goat