2012-01-12 16 views
12

Używam Intellij IDEA do pracy nad projektem Java.Intellij IDEA: Fałszywe pozytywy na kompilacji

Podczas pobierania wersji Intellij otrzymuję wiele fałszywych alarmów, ale tylko wtedy, gdy występują inne błędy kompilacji - np. Wprowadziłem zmianę i oczekuję wielu błędów kompilacji, więc kompilowałem, aby znaleźć wszystkie błędy. (W tym przypadku zmieniłem szeroko używany interfejs i chcę, aby kompilator złapał błędy, dzięki czemu wiem, które implementacje naprawić). Oprócz niektórych z tych oczekiwanych błędów Intellij zgłasza setki fałszywych alarmów (co utrudnia aby znaleźć prawdziwe błędy - obecnie kompilator wyświetla za każdym razem tylko jeden prawdziwy błąd kompilacji, więc muszę przebudować, aby znaleźć następny błąd ...). Te fałszywe błędy kompilacji nie są podświetlone - w rzeczywistości nie są prawdziwymi błędami kompilacji. (Nie pojawiają się również, gdy kompiluję za pośrednictwem Mavena).

Najczęstszym błędem jest "nie można znaleźć symbolu klasy [X]", mimo że ta klasa często znajduje się w tym samym projekcie.

Próbowałem: - uaktualnienie IntelliJ (od 10.5.1 do 10.5.2 do 11.0.1) - unieważnianiu i odbudowy skrytek - ponowne uruchamianie Intellij ... ale bez skutku.

Przeszukałem numer Intellij Bug Tracking board, ale nie znalazłem tam żadnego odnośnika, więc zastanawiałem się, czy to błąd użytkownika (jeśli tak, jakie ustawienia muszę zmienić)?

Czy ktoś jeszcze doświadczył czegoś takiego? Jeśli tak, jak to naprawiłeś?

+0

Wywołałbym fałszywy komunikat o błędzie a * false negative *. A * false positive * to kod, który najwyraźniej kompiluje się w IntelliJ, ale nie. Widziałem to od czasu do czasu i zgłaszałem błąd do Jetbrains, ale nigdy wystarczająco, aby spowodować problem. –

+0

@amaidment: Rzadko opuszczam wiele klas w stanie, który nie kompiluje, ale widzę coś podobnego (choć może nie identycznego), ponieważ, no, dosłownie lata. Na przykład w aplikacjach komputerowych, w których używam kreatora GUI IntelliJ, jeśli mam tylko * jedną * klasę, która nie kompiluje i próbuje przekompilować wszystko, otrzymam ** wiele ** z następujących błędów: * "... Form. Klasa do wiązania nie istnieje: ... Wyświetl" *. Myślę, że zasadniczo otrzymuję ten komunikat dla każdego GUI zbudowanego za pomocą wbudowanego w GUI programu IntelliJ. Ponownie, ponieważ moje projekty zazwyczaj się kompilują, nie jest to problem: -/ – TacticalCoder

+0

@ user988052, gratulacje. Zwykle kompiluję też moje projekty. Rzeczywiście, nie chcę być w stanie, w którym kod się nie komplikuje ... ale czasami trzeba dokonać zmiany, która mogłaby spowodować wiele błędów kompilacji (jak na moją edycję, w tym przypadku przez zmianę szeroko używany interfejs) - to te prawdziwe błędy kompilacji, które chcę naprawić, ale fałszywe raportowanie błędów przez Intellijla oznacza, że ​​raportuje tylko jeden prawdziwy błąd na kompilację ... – amaidment

Odpowiedz

3

Problem ten może być spowodowany nieprawidłową konfiguracją projektu, np. Gdy niektóre katalogi źródłowe modułów są dodawane do zależności jako katalogi biblioteki. Jeśli nie możesz samodzielnie znaleźć problemu, skontaktuj się z pomocą techniczną lub zgłoś błąd do YouTrack z załączonym projektem próbki i krokami, aby odtworzyć problem.

+0

Czy możesz dodać link do miejsca, w którym takie błędy zostały opublikowane? Czy są już opublikowane podobne bugi? – LaFayette

8

Jest to prawdopodobnie zbyt późno, aby ci pomóc, ale może pomoże to komuś innemu. Miałem podobny problem. IntelliJ skarżył się, że nie może znaleźć klasy symboli, a klasa, której nie mogła znaleźć, miała ikonę z małym x w lewym górnym rogu. Symbol x wskazuje, że klasa została wykluczona z kompilacji. (Nie mam pojęcia, jak to się stało.)

Aby uwzględnić wykluczony plik, przejdź do ustawień projektu, np. Klikając Ctrl + Alt + S. Następnie możesz zmodyfikować listę znalezioną w Ustawieniach projektu -> Kompilator -> Wykluczenia, aby ponownie uwzględnić wykluczony plik.

+0

Kontynuowałbym przez wiele godzin szukając powodu. Może przypadkowo nacisnąłem klawisz Alt podczas zapisywania skrótu pliku. –

+0

W Mac OS musisz wybrać "Preferences" z menu aplikacji, a następnie wybrać Compiler> Excludes. –