JavaRush/Java Π±Π»ΠΎΠ³/Random/IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°
Viacheslav
3 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ

IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°

Π‘Ρ‚Π°Ρ‚ΡŒΡ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹ Random
участников
Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ инструмСнты ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’ Ρ‚ΠΎΠΌ числС, Π»Π΅Π³Ρ‡Π΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° стилСм своСго ΠΊΠΎΠ΄Π°, ΡΡ‚Π°Ρ€Π°ΡΡΡŒ ΡΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡƒ Π΅Π³ΠΎ "самовольноС" Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΎΠ±Π·ΠΎΡ€Π΅ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ срСдства прСдоставляСт IDE IntelliJ Idea Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠ΄ Π±Ρ‹Π»ΠΎ приятно Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ.
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 1

ВступлСниС

Π―Π·Ρ‹ΠΊ программирования ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° язык, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ говорят люди. Π Π°Π·Π½ΠΈΡ†Π° лишь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ это особСнный язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ слуТит для общСния с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚ΡŒ Π΅ΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΡ‚ Π½Π΅Π³ΠΎ Ρ…ΠΎΡ‚ΠΈΠΌ. Но общСния ΠΎΠ΄ΠΈΠ½ Π½Π° ΠΎΠ΄ΠΈΠ½ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ. Π”Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ язык программирования, Π²Ρ‹ смотрСли Π² ΠΊΠ½ΠΈΠ³Ρƒ ΠΈΠ»ΠΈ Π½Π° ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ рСсурс Π²Ρ€ΠΎΠ΄Π΅ JavaRush. И Π² этом источникС Π²Ρ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΉΠΌΡ‘Ρ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. Но ΠΈ Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρƒ вас появляСтся Π·Π½Π°Π½ΠΈΠ΅ языка Java. Как ΠΈ Π² любом языкС, Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ приняты Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° формирования ΠΊΠΎΠ΄Π°. НапримСр, ΠΏΠ˜ΡΠΡ‚Π¬ Π·ΠΠ±ΠžΡ€ΠžΠΌ Π² ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠΌ общСствС посчитаСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎΠΌ Π΄ΡƒΡ€Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ½Π°, Π° Π² Java Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ с большой Π±ΡƒΠΊΠ²Ρ‹ являСтся Π³Ρ€ΡƒΠ±Ρ‹ΠΌ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ code style. ΠŸΡ€Π°Π²ΠΈΠ»Π° оформлСния Java ΠΊΠΎΠ΄Π° сформулированы Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ Java Code Convention. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡΡ‚ΠΈΠ»ΡŒ оформлСния ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π³Π»Π°ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, отступы. А ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ срСдства контроля вСрсий, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС вСсь ΠΊΠΎΡˆΠΌΠ°Ρ€, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Ρ„Π°ΠΉΠ» Ρ‚ΠΎ с отступами Π² Π²ΠΈΠ΄Π΅ tab, Ρ‚ΠΎ с отступами Π² Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ². Каково Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΠΌΡƒ, ΠΊΠΎΠΌΡƒ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΊΡƒ всСго Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅, Π° ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ Π±ΡƒΠ΄Π΅Ρ‚ вСсь Ρ„Π°ΠΉΠ» ΠΈΠ·-Π·Π° исправлСния ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² Π½Π° Ρ‚Π°Π±Ρ‹ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚. ЕстСствСнно, ΠΊΠ°ΠΊ ΠΈ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ языком, ΡΡ‚ΠΈΠ»ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. НапримСр, Π½Π° просторах сСти ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Google Java Style Guide ΠΈΠ»ΠΈ Twitter Java Style Guide. Для этой ΠΎΠ±Π·ΠΎΡ€Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ Π½Π°ΠΌ понадобится испытуСмый. Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ услугой систСмы сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² Gradle. Он ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π½Π°ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ для быстрого старта. Π£ Gradle Π΅ΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½: Build Init Plugin. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ Ρ‚Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ: gradle init --type java-application ПослС этого запускаСм IntelliJ Idea. Если Ρƒ вас появится ΠΎΠΊΠ½ΠΎ с ΡƒΠΆΠ΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ (ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠΎΠ΄Π°, Π΄Π΅Ρ€Π΅Π²ΠΎ структуры ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°), Π·Π°ΠΊΡ€ΠΎΠ΅ΠΌ этот ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ File -< Close Project. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΠΎΠΊΠ½Π΅ привСтствия Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ "Import Project" ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ наш Π½ΠΎΠ²Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. ΠŸΡ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚Π΅ выставим Ρ„Π»Π°Π³ "Use autoimport". Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΠΊΠ°ΠΊ-Ρ‚ΠΎ ΡƒΠΏΡ€ΠΎΡΡ‚ΠΈΡ‚ΡŒ Тизнь ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ соврСмСнных инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π² Idea

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠ² ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, Π½Π°ΠΆΠΌΡ‘ΠΌ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΡŽ клавиш Ctrl+N ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² класс AppTest. Π­Ρ‚ΠΎΡ‚ класс β€” класс тСста ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Он ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:
import org.junit.Test;
import static org.junit.Assert.*;

public class AppTest {
    @Test public void testAppHasAGreeting() {
        App classUnderTest = new App();
        assertNotNull("app should have a greeting", classUnderTest.getGreeting());
    }
}
Π§Ρ‚ΠΎ Ρ‚ΡƒΡ‚ сразу бросаСтся Π² Π³Π»Π°Π·Π°? Аннотация с объявлСниСм ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строкС, Ρ‡Ρ‚ΠΎ выглядит нСкрасиво, ΡΠΎΠ³Π»Π°ΡΠΈΡ‚Π΅ΡΡŒ. Как ΠΆΠ΅ это ΠΈΡΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ? Π’ IntelliJ Idea Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» мСню "Code" для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… манипуляций с ΠΊΠΎΠ΄ΠΎΠΌ. Одной ΠΈΠ· Ρ‚Π°ΠΊΠΎΠΉ манипуляций являСтся "Reformat Code" ΠΈΠ»ΠΈ комбинация клавиш Ctrl + L. ПослС примСнСния аннотация Π±ΡƒΠ΄Π΅Ρ‚ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ строкС, Π° сам ΠΌΠ΅Ρ‚ΠΎΠ΄ β€” Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π‘Ρ‚ΠΎΠΈΡ‚ сразу Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ данная опСрация выполняСтся Π½Π°Π΄ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ участком ΠΊΠΎΠ΄Π°. А Ссли Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π½Π΅Ρ‚, опСрация форматирования Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° Π½Π°Π΄ всСм содСрТимым. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΠΎΠ²Ρ‹ΠΉ тСстовый ΠΌΠ΅Ρ‚ΠΎΠ΄:
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
	assertThat(result, is(12));
}
И Π΄Π²Π° ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
Как Π²ΠΈΠ΄Π½ΠΎ, опСрация Π½Π°Π΄ Stream Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π° Π² ΠΎΠ΄Π½Ρƒ строку. А Ρ‡Ρ‚ΠΎ Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ всСгда ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π²Ρ‹Π·ΠΎΠ² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… выстроСн Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ, Ρ€Π°Π·Π±ΠΈΠ²Π°Π»ΠΎ ΠΏΠΎ Ρ‚ΠΎΡ‡ΠΊΠ΅ Π½Π° Π½ΠΎΠ²Ρ‹Π΅ строки? Π‘ ΠΎΠ΄Π½ΠΎΠΉ стороны, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Но ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρƒ нас всё Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ само. Π’Π΅Π΄ΡŒ пСриодичСски ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π·Π°Π±Ρ‹Π²Π°Ρ‚ΡŒ, ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΊΠΎΠ΄Π° станСт Π²Π΅Π·Π΄Π΅ Ρ€Π°Π·Π½Ρ‹ΠΌ, Π° это Π½Π΅ Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Π½Π°Π΄ΠΎ ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Idea выполняСт Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π² Idea Π² мСню ΠΏΡƒΠ½ΠΊΡ‚ File -> Settings (ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΡ‘ΠΌ Ctrl + Alt + S). Π’ ΠΏΠΎΠ»Π΅ поиска Π² ΠΎΠΊΠ½Π΅ настроСк напишСм "Code style". Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Code style Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ настройки Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Java. Но сСйчас нас интСрСсуСт ΠΈΠΌΠ΅Π½Π½ΠΎ Java. Как Π²ΠΈΠ΄Π½ΠΎ, настройки Ρ€Π°Π·Π±ΠΈΡ‚Ρ‹ Π½Π° нСсколько Π²ΠΊΠ»Π°Π΄ΠΎΠΊ. Π§Ρ‚ΠΎ самоС ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ΅, Ρ‚Π°ΠΊ это Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ измСнСния Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΊΠ½Π°:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 2
Как Π²ΠΈΠ΄Π½ΠΎ Π½Π° ΡΠΊΡ€ΠΈΠ½ΡˆΠΎΡ‚Π΅, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ настройку для "Chained method calls" ΠΊΠ°ΠΊ "wrap always", Ρ‚.Π΅. Ρ€Π°Π·Π±ΠΈΠ²Π°Ρ‚ΡŒ всСгда для ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Ρ‘Π½Π½Ρ‹Ρ… Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ². Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°ΠΆΠΌΡ‘ΠΌ Π΅Ρ‰Ρ‘ Ρ€Π°Π· Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² тСстС ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚! Но ΠΈΠ½ΠΎΠ³Π΄Π° Π±Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΊΠΎΠ΄ Π²Π½Π΅ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ» форматирования. Настроим Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 3
Π§Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Code Style Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΎΠ² ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ форматирования:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 4
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΡ‹ смоТСм ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ нашСго тСста Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ останСтся Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ это напишСм ΠΌΡ‹:
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	// @formatter:off
	Integer result = data.stream().filter(number -> number % 2 == 0)
                             .reduce((n1, n2) -> n1 + n2)
                             .get();
	assertThat(result, is(12));
	// @formatter:on
}
Π”Π°, Ссли Π²Ρ‹ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»ΠΈ: ΠΊΠΎΠ³Π΄Π° Π²Ρ‹ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚Π΅ Tab, Idea Π·Π° вас Π΅Π³ΠΎ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ (ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ). Но ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ это ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΌ ΠΆΠ΅ Π² Code Style:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 5
Как Π’Ρ‹ Π²ΠΈΠ΄Π΅Ρ‚Π΅, Ρ‚Π°ΠΌ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ мноТСство настроСк. Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ настройки Code style ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ здСсь: "Idea Help: Code Style". Π•ΡΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΎΠ΄Π½Π° ваТная ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΡŒ форматирования β€” Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ². Оно выполняСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΈ называСтся "Optimize Imports" ΠΈ находится Π² ΠΏΡƒΠ½ΠΊΡ‚Π΅ мСню Code -> Optimize Imports (Ctrl + Alt + O). ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠ² ΡƒΠ±ΠΈΡ€Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΈΠΌΠΏΠΎΡ€Ρ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ располагаСт ΠΈΡ… Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ порядкС Π² соотвСтствии с настройками ΠΈΠ· Π²ΠΊΠ»Π°Π΄ΠΊΠΈ Imports настроСк Code Style для Java. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ссли Π²Π°ΠΌ захочСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ происходило автоматичСски, для вас Π΅ΡΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ: это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π° Save Actions.

РаспространСниС настроСк Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅

ΠžΡ‚Π»ΠΈΡ‡Π½ΠΎ, Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄Π΅Π»ΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΡΡ‚ΠΈΠ»ΡŒ форматирования Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Но ΠΊΠ°ΠΊ этот ΡΡ‚ΠΈΠ»ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅? ΠžΡ‡Π΅Π½ΡŒ просто. Π•ΡΡ‚ΡŒ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². Π‘Π°ΠΌΡ‹ΠΉ простой β€” ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ схСму. ΠžΡ‚ΠΊΡ€ΠΎΠ΅ΠΌ настройки Idea Ρ‡Π΅Ρ€Π΅Π· File -> Settings (ΠΈΠ»ΠΈ Π½Π°ΠΆΠΌΡ‘ΠΌ Ctrl + Alt + S). Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ Code Style ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ надпись Scheme. Π­Ρ‚ΠΎ наша схСма форматирования. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΡƒΠΊΠ°Π·Π°Π½Π° схСма с ΠΈΠΌΠ΅Π½Π΅ΠΌ Default ΠΈ рядом приписка IDE: это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ это настройка Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для нашСй IDE, ΠΈ ΠΎΠ½Π° Π½Π΅ дСйствуСт Π½ΠΈ Π½Π° ΠΊΠΎΠ³ΠΎ. Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ "ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΡƒΡŽ" схСму, ΠΏΠΎ ΠΊΠ½ΠΎΠΏΠΊΠ΅ справа Π΄Π΅Π»Π°Π΅ΠΌ "Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚" ΠΈ Π΄Π°Ρ‘ΠΌ Π΅ΠΌΡƒ Π½Π°Π·Π²Π°Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: JavaRush
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 6
ПослС этого ΠΌΡ‹ смоТСм ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ настройки:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 7
Π”Ρ€ΡƒΠ³ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” это ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ настроСк Idea:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 8
Π’Ρ€Π΅Ρ‚ΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ β€” Settings Repository. ΠŸΡ€ΠΎ использованиС Settings Repository см. ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ "IntelliJ Idea Help : Settings Repository". Π’ Ρ‚Π΅ΠΌΡƒ распространСния Π΅Π΄ΠΈΠ½ΠΎΠ³ΠΎ стиля Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρƒ Π½Π΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ стилСй ΠΈΠ· IDE Eclipse. Для этого потрСбуСтся установка ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½Π°: ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ настройки Idea Ρ‡Π΅Ρ€Π΅Π· File -> Settings (Ctrl + Alt + S) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π°Π·Π΄Π΅Π» Plugins. Для поиска Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² Π½Π°ΠΆΠΌΡ‘ΠΌ ΠΊΠ½ΠΎΠΏΠΊΡƒ "Browse Repositories", послС Ρ‡Π΅Π³ΠΎ Π² ΠΎΠΊΠ½Π΅ поиска Π½Π°ΠΉΠ΄Ρ‘ΠΌ ΠΏΠ»Π°Π³ΠΈΠ½ Eclipse Code Formatter.
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 9
Π’Π΅ΠΏΠ΅Ρ€ΡŒ, послС установки, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Idea β€” это стандартная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°. ПослС этого всё Ρ‚Π°ΠΌ ΠΆΠ΅, Π² настройках Idea, ΠΌΡ‹ Π½Π°ΠΉΠ΄Ρ‘ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·Π΄Π΅Π»: "Eclipse Code Formatter" ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π° форматирования для Eclipse ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ здСсь. Π’Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 10

УТСсточСниС Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ

Помимо срСдств Idea, ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½Ρ‹ систСм сборок для уТСсточСния Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ. Никак Π½Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡˆΡŒ, Ρ‡Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ использовал Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. Если Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ 5 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ β€” Π΅Ρ‰Ρ‘ ΠΌΠΎΠΆΠ½ΠΎ. Если Π² ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ 100 Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ β€” Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ. Π”Π° Π΄Π°ΠΆΠ΅ Π·Π° ΠΏΡΡ‚ΡŒΡŽ ΡƒΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ. Π”Π° ΠΈ Π·Π°Ρ‡Π΅ΠΌ лишняя Ρ‚Ρ€Π°Ρ‚Π° Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ‚Π°ΠΊΠΎΠ΅? ΠšΡƒΠ΄Π° ΠΏΡ€ΠΎΡ‰Π΅ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΡ‚ΡŒ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΠΏΡ€ΠΈ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π°Π²ΠΈΠ». На самом Π΄Π΅Π»Π΅, это ΡƒΠΆΠ΅ цСлая ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅ΠΌΠ° ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ "Inspect Code". Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ хочСтся просто ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. Одним ΠΈΠ· самых распространённых ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² для Gradle (Ρ‚.ΠΊ. ΠΎΠ½ собираСт Ρƒ нас ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Ссли ΠΏΠΎΠΌΠ½ΠΈΡ‚Π΅) являСтся pmd. Для Π΅Π³ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ достаточно ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² build script нашСго gradle ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (Ρ„Π°ΠΉΠ» build.gradle Π² ΠΊΠΎΡ€Π½Π΅ нашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°) ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π² Π½Ρ‘ΠΌ pmd рядом с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ:
plugins {
    // Apply the java plugin to add support for Java
    id 'java'
    // Check source code
    id 'pmd'
    // Apply the application plugin to add support for building an application
    id 'application'
}
Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°Π΄Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ настройки Ρ‚Π°ΠΌ ΠΆΠ΅:
pmd {
    ignoreFailures = false
    pmdTest.enabled = true
    ruleSets = [
            'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-comments',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'
    ]
}
Π”Π°ΠΆΠ΅ Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ ΡƒΠΆΠ΅ всё Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ. Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ gradle build ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΡˆΠΈΠ±ΠΊΡƒ. Π§Ρ‚ΠΎ приятно, ΠΏΡ€ΠΈ сборкС формируСтся ΠΎΡ‚Ρ‡Ρ‘Ρ‚. И Ссли Π±ΡƒΠ΄ΡƒΡ‚ ошибки, ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ сообщСниС Π²ΠΈΠ΄Π°:
BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
Если ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² ΠΎΡ‚Ρ‡Ρ‘Ρ‚, ΡƒΠ²ΠΈΠ΄ΠΈΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 11
ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ Π² ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ΅ Problem Π΄Π°Π½Π° ссылка Π½Π° описаниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π½Π° сайтС ΠΏΠ»Π°Π³ΠΈΠ½Π° pmd. НапримСр, для ошибки "headerCommentRequirement Required" ссылка Π²Π΅Π΄Ρ‘Ρ‚ сюда: pmd - CommentRequired. Данная ошибка Π½Π°ΠΌΠ΅ΠΊΠ°Π΅Ρ‚ Π½Π°ΠΌ, Ρ‡Ρ‚ΠΎ наш класс Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ JavaDoc. НаличиС JavaDoc Π½Π°Π΄ классами ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ шаблонов:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 12
И ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ для File Header содСрТимоС:
IntelliJ IDEA: ΡΡ‚ΠΈΠ»ΡŒ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° - 13
ПослС этого ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π½Π°Π΄ классом App Π² JavaDoc ΠΈ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ ΠΏΡ€ΠΈ Π½ΠΎΠ²ΠΎΠΌ Build, Ρ‡Ρ‚ΠΎ ошибка исчСзла.

Π˜Ρ‚ΠΎΠ³

Π‘Ρ‚ΠΈΠ»ΡŒ ΠΊΠΎΠ΄Π° Π²Π°ΠΆΠ΅Π½ для ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ. ΠšΡ€Π°ΡΠΈΠ²Ρ‹ΠΉ ΠΊΠΎΠ΄, написанный ΠΏΠΎ ΠΎΠ±Ρ‰ΠΈΠΌ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ β€” Π·Π°Π»ΠΎΠ³ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ваши ΠΊΠΎΠ»Π»Π΅Π³ΠΈ Π΅Π³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΈ быстрСС ΠΏΠΎΠΉΠΌΡƒΡ‚, ΠΈ Π½Π΅ скаТут Π² ваш адрСс ΠΏΠ°Ρ€Ρ‹ ласковых. Учитывая соврСмСнныС срСдства Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ» Π½Π΅ Ρ‚Π°ΠΊ ΡƒΠΆ слоТно. НадСюсь, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ ΠΏΠΎΠΊΠ°Π·Π°Π», Ρ‡Ρ‚ΠΎ это Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ. Ну ΠΈ ΠΏΠΎ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΈ, Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Π° ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅: #Viacheslav
ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (1)
  • популярныС
  • Π½ΠΎΠ²Ρ‹Π΅
  • старыС
Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ
16 октября 2018, 19:12
Π”ΠΎΠ»Π³ΠΎ смСялся Π½Π°Π΄ ситуациСй Π² сСриалС "Биликоновая Π΄ΠΎΠ»ΠΈΠ½Π°", Π³Π΄Π΅ Π ΠΈΡ‡Π°Ρ€Π΄ поссорился с Π΄Π΅Π²ΡƒΡˆΠΊΠΎΠΉ ΠΈΠ·-Π·Π° ΠΏΡ€ΠΎΠ±Π΅Π»ΠΎΠ² ΠΈ Ρ‚Π°Π±ΠΎΠ², Π½ΠΎ ΠΏΡ€ΠΎ сСбя-Ρ‚ΠΎ Π΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡΡŒ Ρ‚Π°Π±Π°ΠΌΠΈ.... Пока Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π» эту ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΈ Π½Π΅ ΠΏΠΎΠ»Π΅Π· Π² настройки...) На Π³ΠΈΡ‚Ρ…Π°Π± ΠΌΠΎΠΈ ΠΏΠΎΠΊΠ° Π΅Ρ‰Ρ‘ ΡƒΡ‡Π΅Π±Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹-Ρ‚ΠΎ ΠΏΠ°Π΄Π°ΡŽΡ‚ с ΠΏΡ€ΠΎΠ±Π΅Π»Π°ΠΌΠΈ (Π° Ссли Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΌΠ΅Π½ΡΡ‚ΡŒ, начинаСтся Π΅Ρ€ΡƒΠ½Π΄Π°). ΠšΠΎΡ€ΠΎΡ‡Π΅, Π³Π»ΡƒΠΏΠΎΡΡ‚ΡŒ Π ΠΈΡ‡Π°Ρ€Π΄Π° Π² Ρ„ΠΈΠ»ΡŒΠΌΠ΅ ΠΌΠ½Π΅ показалась Π³Π»ΡƒΠΏΠΎΡΡ‚ΡŒΡŽ, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡŽ ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ, Π±ΡƒΠ΄Ρƒ всё Π²Π°Π»ΠΈΡ‚ΡŒ Π½Π° IDE)